一、制作負(fù)載均衡使用的證書文件
從相關(guān)部門獲取對(duì)應(yīng)的證書文件(my.jks)、證書的密碼(mypass)、證書對(duì)應(yīng)的名稱,通常為IP或者域名(myalias),
通常jks文件包含了服務(wù)器的私鑰(server.key),服務(wù)器證書(server.crt)、根證書(ca.crt)
二、通過(guò)java的keytool工具導(dǎo)出成 PKCS12 格式文件(my.p12)
keytool -importkeystore -srckeystore my.jks -destkeystore my.p12 -srcstoretype JKS -deststoretype PKCS12 \
-srcstorepass mypass -deststorepass mypass -srcalias myalias -destalias myalias -srckeypass mypass -destkeypass mypass -noprompt
上述命令在一行執(zhí)行
三、使用openssl把PKCS12文件(my.p12)轉(zhuǎn)換成我們需要的pem文件(my.pem)
openssl pkcs12 -in my.p12 -out my.pem -passin pass:mypass -passout pass:mypass
四、分離my.pem文件,導(dǎo)出服務(wù)器配置所需文件
my.pem一個(gè)文件里面實(shí)際上包含了服務(wù)器做雙向SSL證書認(rèn)證的所有文件,打開(kāi)my.pem能查看所有的key和證書
得到配置服務(wù)器使用的 server.crt,server.key,ca.crt 文件,上述訪問(wèn)的命令分別為:
openssl pkcs12 -in my.p12 -nodes -nocerts -out server.key
openssl pkcs12 -in my.p12 -nodes -nokeys -clcerts -out server.crt
openssl pkcs12 -in my.p12 -nodes -nokeys -cacerts -out ca.crt
五、配置NGINX
ssl on;
ssl_certificate /path/to/server.crt;
ssl_certificate_key /path/to/server.key;
ssl_client_certificate /path/to/ca.crt;
ssl_verify_client on;
# 此行方便在java中能夠得到證書信息
proxy_set_header X-Forwarded-Proto https;
六、上述配置后,在重新啟動(dòng)服務(wù)器的時(shí)候,老是讓你輸入私有key的密碼,為此
openssl rsa -in server.key -out server.key.unsecure
修改NGINX配置:
ssl_certificate_key /path/to/server.key.unsecure;