jdk 生成HTTPS 证书
1、在cmd 窗口下执行命令
在${JAVA_HOME}/bin 下可以看到keytool.exe,在该目录打开cmd然后输入
keytool -genkey -v -alias localKey -keyalg RSA -keystore D:\Utils\jdkHttps\localKey.keystore -validity 3650
执行命令后展示出这个页面
其中密码是:******
最后提示了:
Warning: JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore D:\Utils\jdkHttps\localKey.keystore -destkeystore D:\Utils\jdkHttps\localKey.keystore -deststoretype pkcs12" 迁移到行业标准格式 PKCS12。
不知道什么意思,标准不对?但是确实提示成功了已经。
紧接着按照提示执行了命令:
keytool -importkeystore -srckeystore D:\Utils\jdkHttps\localKey.keystore -destkeystore D:\Utils\jdkHttps\localKey.keystore -deststoretype pkcs12
然后提示了以下信息:
生成了新的文件。
2、证书转换
常用证书格式:
JKS(.keystore):tomcat使用格式
微软(.pfx):微软使用
OPSSL之PEM(.key + .crt):nginx 使用PEM格式
由于生成的证书是jks格式nginx不能使用需要转换成PEM格式,需要使用到工具jks2pfx
提取码:io0o
jks2pfx的命令格式:
JKS2PFX.bat keystore password alias exportname
keystore:KeyStore文件绝对路径
password:文件对应的密码
alias:生成证书CSR时,所起的Alias别名
exportname:准备导出的文件名称 (不要带扩展名)
exportname:准备导出的文件名称 (不要带扩展名)
JKS2PFX.bat D:\Utils\jdkHttps\localKey.keystore **** localKey exportfile
该命令将server.jks中别名为localKey的SSL证书导出,运行后将在jks2pfx的按照目录产生3个文件:exportfile.key、exportfile.crt、exportfile.pfx;
执行后查看文件:
exportfile.crt
exportfile.key
exportfile.pfx
3、配置ng进行测试
- 将exportfile.key、exportfile.crt复制到nginx的conf目录,并将exportfile.crt重命名未exportfile.pem
- 配置nginx.conf,打开https:
server { listen 80; server_name localhost; #将http请求自动跳转到https上 return 301 https://$server_name$request_uri; } server { #监听443端口 listen 443 ssl; server_name localhost; #证书路径。从conf开始找 ssl_certificate exportfile.pem; ssl_certificate_key exportfile.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location / { #反向代理http://127.0.0.1:8080 proxy_pass http://127.0.0.1:8080; } }