Nginx证书配置:cer文件和jks文件转nginx证书.crt和key文件

记录一次Nginx证书配置,我这个过程可能有些繁琐,如果大牛有更好的办法,欢迎评论指正

环境


1. windows系统

2. nginx 1.14.2

步骤

1.利用JDK的keytool工具生成密钥库和证书(以下代码片段是一个bat脚本)


@echo on
rem 1. 生成密钥库
rem 生成密钥对  加密算法RSA 证书拥有者信息 server条目 server.jks密钥库 条目密码 密钥库密码
keytool -genkeypair -keyalg RSA -dname "CN=HanLuo" -alias server -keystore server.jks -keypass 123456 -storepass 123456
rem 2. 导出条目为自签名证书
rem 导出到server.cer文件中 server条目 server.jks密钥库 密钥库密码
keytool -exportcert -file server.cer -alias server -keystore server.jks -storepass 123456
rem 3. 将自签名证书导入信任库
rem 导入证书 server.cer server条目 导入client_trusk.jks信任库 密钥库密码 条目密码
keytool -importcert -file server.cer -alias server -keyalg client_trusk.jks -storepass 123456 -keypass 123456

1.1 查看jks文件中的entry

keytool -list -keystore server.jks
查看jks文件中的entry

2.将.jks文件转为.p12(PKCS12格式证书库)

keytool -importkeystore -srckeysotre server.jks -destkeystore server-pkcs12.p12 -deststoretype PKCS12

2.2 查看新格式(pkcs12)证书库

keytool -deststoretype PKCS12 -keystore server-pkcs12.p12 -list

3.将cer格式证书转pem格式

openssl x509 -inform der -in server.cer -out server-pem.pem

4. 提取私钥

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

5. nginx服务器配置

server {
        #监听端口和域名
        listen      443 ssl;
        server_name  localhost;
        #以下两个为证书文件
        ssl_certificate D:/java/nginx-1.14.2/cert/server-p.pem;
        ssl_certificate_key D:/java/nginx-1.14.2/cert/server.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;
        location / {
            root D:/nginx/portal;
            index index.html;
        }
    }
# 访问80端口时转发到443端口,转为https访问
    server {
        listen      80;
        server_name  localhost;
        return 301 https://$host$request_uri;
    }

效果展示

效果显示

你可能感兴趣的:(Nginx证书配置:cer文件和jks文件转nginx证书.crt和key文件)