本篇介绍如何将jks(java key store)证书转换为nginx格式的证书。
因业务需要,现在需要将所有的服务升级为https
的方式访问,不管是对外还是内部网络都需要升级,然后负责安全的运维只丢给我一个压缩包,解压开只有以下文件:
1 2 3 4
| xxx.jks xxx.keystore xxx.p12 xxx_password.txt
|
查看jks文件中的entry
1
| keytool -list -keystore xxx.jks
|
输出如下信息:
1 2 3 4 5 6 7 8
| 输入密钥库口令: 密钥库类型: PKCS12 密钥库提供方: SUN
您的密钥库包含 1 个条目
1, 2022年8月1日, PrivateKeyEntry, 证书指纹 (SHA-256): 21:BC:49:11:72:DD:7C:32:32:37:59:6F:62:38:BB:E8:D5:79:ED:D6:27:DA:D3:06:6F:32:E3:A1:CC:23:2D:AC
|
其中1, 2022年8月1日, PrivateKeyEntry,
这一个就是一个entry的信息,1表示这个entry的别名。
将jks文件导出为Nginx证书所需要的.cert和.key文件
xxx
是示例文件名
将jks转换为P12(PKCS12格式的证书库)
1
| keytool -importkeystore -srckeystore xxx.jks -srcalias 1 -destkeystore xxx.p12 -deststoretype PKCS12
|
查看新格式(pkcs12)证书库
1
| keytool -deststoretype PKCS12 -keystore xxx.p12 -list
|
提取证书
1 2
| openssl pkcs12 -in xxx.p12 -nokeys -clcerts -out xxx_ssl.crt openssl pkcs12 -in xxx.p12 -nokeys -cacerts -out xxx_ca.crt
|
xxx-ssl.crt是SSL证书,xxx_ca.crt是中级证书,俩个合并到一起才是nginx服务器所需要的证书
将这两个证书合并到一起
1
| cat xxx-ssl.crt xxx_ca.crt > xxx_ngx.crt
|
提取私钥
1
| openssl pkcs12 -nocerts -nodes -in xxx.p12 -out xxx_ngx.key
|
配置Nginx
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| server { listen 443 ssl; server_name www.yourdomain.net; access_log /your_log_path/access.log; error_log /your_log_path/error.log;
ssl_certificate /your_ssl_path/ssl/certificate/xxx_ngx.crt; ssl_certificate_key /your_ssl_path/ssl/key/xxx_ngx.key;
ssl_session_timeout 1m; ssl_protocols SSLv2 SSLv3 TLSv1.2; ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256:AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5; ssl_prefer_server_ciphers on;
*** }
|