记录一次Nginx证书配置,我这个过程可能有些繁琐,如果大牛有更好的办法,欢迎评论指正环境
windows系统
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


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;
    }


 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐