JKS后缀结尾tomcat的证书转换成key和crt结尾的nginx证书

1.jks转p12

keytool -importkeystore -srckeystore xxx.com.jks -destkeystore  server.p12  -srcstoretype jks -deststoretype pkcs12

2.p12转crt

openssl pkcs12 -in server.p12 -nokeys -clcerts -out server.crt

3.p12转key

openssl pkcs12 -in server.p12 -nocerts -nodes -out server.key

4.key转pem结尾的私钥

openssl rsa -in server.key -out server_privkey.pem

5.key转pem结尾的公钥

openssl rsa -in server.key -pubout -out server_public.pem

命令行转换以后内容有在-----BEGIN CERTIFICATE-----这个分隔符前面有多余的内容,自行删除即可。

配置nginx只需使用crt结尾的和key结尾的文件即可,已验证可行。pem结尾的也可以用户配置nginx,未验证是否可行。

6.证书过期替换问题。

key和crt都需要替换,如果只替换私钥key会报错,如下:

error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch

表示ssl所使用的证书和私钥不匹配,可以用以下命令验证:

openssl x509 -noout -modulus -in server.crt | openssl md5
openssl rsa -noout -modulus -in server.key | openssl md5

如果生成的值不一致,则需要重新生成证书。

 7.证书过期后续签拿到的是cer后缀的证书和key后缀的私钥,需要将cer后缀转换成crt后缀

CER是二进制形式的X.509证书,DER编码。

CRT是二进制X.509证书,封装在文本(base-64)编码中。

如下两种方式进行尝试转换

openssl x509 -inform DER -in certificate.cer -out certificate.crt

openssl x509 -inform PEM -in certificate.cer -out certificate.crt

cert转pem(有些nginx配置的是pem)

openssl x509 -in certificate.cer -out certificate.pem

 

8.证书级别B生成A+

(1)提示证书链不完整

去网站:证书链下载/证书链修复 里面输入域名生成证书链,直接拼接在cert证书后面即可。

(2)需要在开启 HSTS,保证浏览器连接该网站始终为 HTTPS 加密版本。

修改nginx配置

server {
    server_name www.xxx.com
    add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
    .....
}

完整nginx server参考配置:

server {
	listen       80;
        listen       443 ssl http2 default_server;
        listen       [::]:443 ssl http2 default_server;
        server_name  www.xxx.com;
        root         /usr/share/nginx/html;

        ssl_certificate "/etc/nginx/cert/server.crt";
        ssl_certificate_key "/etc/nginx/server.key";
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout  10m;
        #ssl_ciphers HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;

	    ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256::!MD5;
	    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

	    add_header Strict-Transport-Security "max-age=80720000; preload";

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;


        location / {
		
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }

检测地址:SSL/TLS安全评估报告

检测结果:

JKS后缀结尾tomcat的证书转换成key和crt结尾的nginx证书_第1张图片

你可能感兴趣的:(nginx从精通到啥也不会,nginx,tomcat,https)