1. 程式人生 > 其它 >window系統建立自簽名SSL證書進行https加密域名訪問

window系統建立自簽名SSL證書進行https加密域名訪問

應用場景

公眾號只配置了https的url地址,用Nginx做反向代理時被服務攔截提示“此網站無法提供安全連線”

tips:

  1. 公眾號後臺路徑區分http和https
  2. hosts檔案和nginx配置在沒有SSL證書的情況下,無法代理https流量,所以需要申請自簽名證書

OpenSSL
github地址

https://github.com/openssl/openssl

官方文件

https://www.openssl.org/

快捷安裝包地址

http://slproweb.com/products/Win32OpenSSL.html

下載window exe安裝包

安裝OpenSSL

同意,並下一步

記住安裝的資料夾路徑,待會會用到

下一步

下一步

下一步

下一步

下一步

安裝成功

生成SSL

開啟安裝OpenSSL的資料夾,進入bin目錄

以管理員身份開啟openssl.exe檔案

tips:

  如果這個地方打不開,設定環境變數,如果能正常開啟則下面的所有命令都不用加openssl。

設定環境變數,例如工具安裝在C:\OpenSSL-Win64,則將C:\OpenSSL-Win64\bin;複製到Path中

開啟命令列程式cmd(以管理員身份執行),執行以下命令:

openssl genrsa -des3 -out server.key 2048

回車,再依次輸入2次密碼,直接輸入123465就行

完成後自動生成server.key檔案

繼續使用key自簽名生成csr檔案

輸入以下命令

openssl req -new -key server.key -out server.csr

注意,會先輸入密碼,在輸入其他資訊,最後再輸入密碼

引數說明

Country Name (2 letter code) [AU]:CN #國家
State or Province Name (full name) [Some-State]:Beijing #省
Locality Name (eg, city) []:Beijing #市
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Ncda #公司
Organizational Unit Name (eg, section) []:IT #部門
Common Name (e.g. server FQDN or YOUR name) []:localhost #域名 這裡需要輸入伺服器的域名
Email Address []:[email protected] #郵箱

到這裡就生成了server.csr檔案

刪除密碼
為了避免每次啟動伺服器都要輸入SSL密碼,在這裡生成一個不需要密碼的key

輸入以下命令

openssl rsa -in server.key -out server_no_passwd.key

輸入之前設定的密碼確認即可

繼續生成自簽名檔案

openssl x509 -req -days 36500 -in server.csr -signkey server_no_passwd.key -out server.crt

到這裡就可以了

雙擊server.crt安裝證書

設定hosts

開啟nginx

#user  nobody;
worker_processes 1;
events {
    worker_connections 1024;
}
http {
    include mime.types;
    default_type application/octet-stream;
    sendfile on;
    keepalive_timeout 65;
    # 代理測試環境
    server {
        listen 80;
        server_name test.com;
        location / {
            # root html;
            # index index.html index.htm;
            proxy_set_header host $host;
            proxy_pass http://127.0.0.1:8095;
        }
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
            root html;
        }
    }
     # test
    server {
        listen 443;
        # test
        server_name test.com;
        ssl on;
        # root html
        # index index.html index.htm;
        # SSL證書放在了同級目錄small資料夾下面
        ssl_certificate cert/test/server.crt;
        ssl_certificate_key cert/test/server_no_passwd.key;
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        location / {
            # 指向當前的某個服務埠
            proxy_pass http://127.0.0.1:8095;
            #設定請求頭,並將頭資訊傳遞給伺服器端
            proxy_set_header Host $host;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
        }
 

訪問https://test.com

繼續前往,雖然沒有小綠鎖,但是能正常訪問並獲取資料

END.