制作能在nginx和IIS中使用的ssl證書
如果覺得證書制作比較麻煩,這裡是本文制作好的證書:https://pan.baidu.com/s/1MJ5YmuZiLBnf-DfNR_6D7A (提取碼:c6tj),密碼都是:123456
園友可下載證書,然後根據後文nginx和IIS的使用方法來使用證書。
制作SSL證書
好瞭,先創建一個空目錄,在這個空目錄下開始制作:
1、生成私鑰Key
執行下面的命令生成私鑰Key:
sudo openssl genrsa -des3 -out demo.key 1024 # openssl genrsa 命令是會用來生成RSA私有秘鑰,不會生成公鑰,因為公鑰提取自私鑰 # -des3 指定加密私鑰文件用的算法,可以不用指定加密算法(自己測試用的話推薦不指定加密算法),可選:-des|-des3|-idea # -out demo.key 將生成的私鑰保存至指定文件 # 1024 指定要生成的私鑰的長度(單位 bit),默認為1024,一般要麼就是1024或者2048
生成過程中會讓輸入密碼,這裡我測試使用的,直接輸入瞭:123456
註:上面生成的demo.key中使用瞭-des3加密算法參數,所以在部署使用後,如果需要重啟,可能會要求輸入密碼確認,比如nginx -s reload時,這樣在自己測試使用時就很麻煩瞭
解決辦法有兩個:
a.生成密碼後再刪除密碼
比如上面生成瞭一個demo.key的私鑰文件,執行下面的命令可以重置:
sudo openssl rsa -in demo.key -out temp.key && sudo rm demo.key && sudo mv temp.key demo.key
b.在生成私鑰是不要指定-des3參數
比如上面的生成demo.key的命令換成:
sudo openssl genrsa -out demo.key 1024
2、生成證書請求文件
執行下面的命令生成證書請求文件:
sudo openssl req -new -key demo.key -out demo.csr # openssl req 命令主要的功能有,生成證書請求文件, 查看驗證證書請求文件,還有就是生成自簽名證書 # -new 說明生成證書請求文件 # -key demo.key 指定已有的秘鑰文件生成秘鑰請求,隻與生成證書請求選項-new配合。 # -out demo.csr 指定生成的證書請求或者自簽名證書名稱
命令執行後會讓輸入一些證書信息,具體可參考下圖:
3、生成crt證書文件
執行下面的命令生成證書文件:
sudo openssl x509 -req -days 36500 -in demo.csr -signkey demo.key -out demo.crt # openssl x509 命令主要用於輸出證書信息,簽署證書請求文件、生成自簽名證書、轉換證書格式等 # -req 表明後面輸入的是一個證書請求文件 # -days 36500 證書的有效期,單位是天(一百年後我們再見吧) # -in demo.csr 指定輸入文件 # -signkey demo.key 簽名證書秘鑰 # -out demo.crt 指定證書的輸出文件
如果提示類似如下,說明生成成功瞭:
4、生成pfx證書安裝包
執行下面命令生成安裝包文件:
sudo openssl pkcs12 -export -inkey demo.key -in demo.crt -out demo.pfx # openssl pkcs12 命令用於生成和分析pkcs12文件 # -export 指定瞭一個PKCS#12文件將會被創建 # -inkey demo.key 指定私鑰文件的位置。如果沒有被指定,私鑰必須在-in filename中指定 # -in demo.crt 指定私鑰和證書讀取的文件 # -out demo.pfx 指定輸出的pkcs12文件
執行命令後會輸入密碼,這裡我輸入同樣是:123456
至此,證書就制作完成瞭,我們得到4個文件:
demo.crt:crt證書文件,nginx配置時可以用到 demo.csr:crt證書請求文件,現在基本上沒什麼用瞭 demo.key:私鑰,nginx配置時可以用到 demo.pfx:證書安裝包,iis部署時可以用到
Nginx配置使用證書
創建一個nginx配置配置文件:
server { listen 4430 ssl; listen [::]:4430 ssl; ssl on; ssl_certificate /home/feng/ssl/demo.crt; #crt證書文件 ssl_certificate_key /home/feng/ssl/demo.key; #私鑰文件 ssl_session_timeout 5m; ssl_protocols SSLv3 SSLv2 TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; ssl_prefer_server_ciphers on; root /var/www/html; index index.html index.htm index.nginx-debian.html; server_name _; location / { try_files $uri $uri/ =404; } }
註意,這裡我為瞭區分,沒有使用默認的443端口,而是使用瞭4430端口
接著使用 nginx -t 驗證和使用 nginx -s reload 重新加載後,使用瀏覽器訪問4430可訪問到瞭,隻不過會提示存在風險,畢竟證書是自己制作的,如下圖:
點擊高級=》接受風險就可以瞭
IIS配置使用證書
IIS配置證書需要pfx證書安裝包(demo.pfx),這裡以IIS7為例:
打開IIS,在主頁中點擊【服務器證書】
點擊右邊操作的【導入】,選擇創建好的pfx證書文件,輸入創建文件時輸入的密碼(上面第4步創建pfx文件時輸入的密碼,這裡是123456):
接著選擇你要設置添加https請求類型的網站,在右邊操作中點擊【綁定】,然後按照下圖操作:
然後重啟一下站點,在指定的端口使用https請求瞭
註:如果你的電腦安裝瞭VMware等工具,443端口可能啟動報錯,可能提示:另一個程序正在使用此文件,進程無法訪問。解決辦法參考:https://www.jb51.net/article/109375.htm
程序中使用證書
有時,我們還可能需要在程序中使用證書,比如在使用Grpc,我們默認是使用https的,或者我們隻是想使用https請求,那麼我們可能需要在程序中使用證書來操作,比如.net core中使用自制證書來生成https請求的項目:
我們創建一個.net core的web項目,使用上面創建的demo.pfx,修改Program.cs:
public class Program { public static void Main(string[] args) { CreateHostBuilder(args).Build().Run(); } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.ConfigureKestrel(options => { options.ListenAnyIP(5000, listenOptions => { listenOptions.UseHttps(@"C:\inetpub\wwwroot\demo.pfx", "123456"); }); }); webBuilder.UseStartup<Startup>(); }); }
啟動之後就可以使用https請求訪問瞭
以上就是制作能在nginx和IIS中使用的ssl證書的詳細內容,更多關於制作ssl證書的資料請關註WalkonNet其它相關文章!
推薦閱讀:
- nginx如何將http訪問的網站改成https訪問
- Nginx配置SSL和WSS步驟介紹
- Nginx如何配置加密證書訪問實現
- Nginx配置ssl實現https的全過程記錄
- Linux環境下生成openssl證書註意細節介紹