流程
準(zhǔn)備階段:
安裝jdk的keytool命令
安裝openssl命令
注:也可以只是用openssl產(chǎn)生證書呼伸。
1.使用jdk提供的keytool工具創(chuàng)建key.store證書
keytool -genkey -alias test-server -dname "C=CN,ST=GD,L=SZ,OU=test,CN=www.test.com" -keyalg RSA -keysize 2048 -validity 3650 -keystore test-server.store -storepass 123456 -keypass 123456
說明:
-alias指定別名為test-server谷朝;
dname 由C 國家,ST 省份,L 城市,OU 單位,CN 一般網(wǎng)址(可以填任意)組成;
-keyalg指定RSA算法蜈亩;
-keystore指定密鑰文件名稱為test-server.store蒸眠;
-storepass指定存儲(chǔ)密碼;
-keypass指定私鑰密碼询件;
-validity指定有效期為3650天燃乍。
2.將生成的keystore轉(zhuǎn)換為PKCS12
通過keytool -importkeystore -help查看參數(shù)說明。
keytool -importkeystore -srckeystore test-server.store -destkeystore test-server.store.p12 -srcstoretype JKS -deststoretype PKCS12 -srcstorepass 123456 -deststorepass 123456
3.從PKCS12證書中提取公鑰證書
通過openssl pkcs12 -help 查看參數(shù)說明宛琅。
openssl pkcs12 -in test-server.store.p12 -passin pass:123456 -nokeys -out cert.pem
4.從PKCS12證書中提取私鑰
提取私鑰刻蟹。
openssl pkcs12 -in test-server.store.p12 -passin pass:123456 -nocerts -nodes -out test-server-private-key.pem
轉(zhuǎn)換證書為rsa格式。
openssl rsa -in test-server-private-key.pem -out private-key.pem
5.查看nginx是否安裝了ssl模塊
通過nginx -V 查看夯秃,如果出現(xiàn) (configure arguments: --with-http_ssl_module), 則已安裝是否安裝了ssl模塊座咆。
D:\nginx>nginx -V
nginx version: nginx/1.17.2
built by cl 16.00.40219.01 for 80x86
built with OpenSSL 1.1.1c 28 May 2019
TLS SNI support enabled
configure arguments: --with-stream_ssl_module
7.配置nginx
拷貝cert.pem,private-key.pem到nginx conf目錄仓洼,配置server模塊介陶。
server {
listen 1443 ssl; #監(jiān)聽端口
server_name _; #請(qǐng)求域名
ssl_certificate cert.pem; #pem證書私鑰路徑
ssl_certificate_key private-key.pem; #pem證書公鑰路徑
ssl_session_timeout 5m; #會(huì)話超時(shí)時(shí)間
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #加密算法
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #SSL協(xié)議
location / {
root html;
index index.html index.htm;
}
}
7.驗(yàn)證