Tomcat+Https+Nginx

命令介绍

•	-genkey 在用户主目录中创建一个默认文件”.keystore”,还会产生一个mykey的别名,mykey中包含用户的公钥、私钥和证书(在没有指定生成位置的情况下,keystore会存在用户系统默认目录)
      注:-genkey可以写成-genkeypair 
•	-alias 产生别名 每个keystore都关联这一个独一无二的alias,这个alias通常不区分大小写
•	-keystore 指定密钥库的名称(产生的各类信息将不在.keystore文件中)
•	-keyalg 指定密钥的算法 (如 RSA DSA,默认值为:DSA)
•	-validity 指定创建的证书有效期多少天(默认 90)
•	-keysize 指定密钥长度 (默认 1024)
•	-storepass 指定密钥库的密码(获取keystore信息所需的密码)
•	-keypass 指定别名条目的密码(私钥的密码)
•	-dname 指定证书发行者信息 其中: “CN=名字与姓氏,OU=组织单位名称,O=组织名称,L=城市或区域名 称,ST=州或省份名称,C=单位的两字母国家代码”
•	-list 显示密钥库中的证书信息 keytool -list -v -keystore 指定keystore -storepass 密码
•	-v 显示密钥库中的证书详细信息
•	-export 将别名指定的证书导出到文件 keytool -export -alias 需要导出的别名 -keystore 指定keystore -file 指定导出的证书位置及证书名称 -storepass 密码
•	-file 参数指定导出到文件的文件名
•	-delete 删除密钥库中某条目 keytool -delete -alias 指定需删除的别 -keystore 指定keystore – storepass 密码
•	-printcert 查看导出的证书信息 keytool -printcert -file g:\sso\michael.crt
•	-keypasswd 修改密钥库中指定条目口令 keytool -keypasswd -alias 需修改的别名 -keypass 旧密码 -new 新密码 -storepass keystore密码 -keystore sage
•	-storepasswd 修改keystore口令 keytool -storepasswd -keystore g:\sso\michael.keystore(需修改口令的keystore) -storepass pwdold(原始密码) -new pwdnew(新密码)
•	-import 将已签名数字证书导入密钥库 keytool -import -alias 指定导入条目的别名 -keystore 指定keystore -file 需导入的证书
•	dname的值详解: 
  CN(Common Name名字与姓氏【域名】) 
  OU(Organization Unit组织单位名称) 
  O(Organization组织名称) 
  L(Locality城市或区域名称) 
  ST(State州或省份名称) 
  C(Country国家名称) 

用JDK自带的keytool工具生成证书

1.生成服务器证书

keytool -genkey -alias test -keypass 123456 -dname
CN=www.test.com,OU=LIULI,O=LIULI,L=BJ,ST=BJ,C=CN” -keyalg RSA
-keysize 2048 -validity 3650 -keystore D:\keys\test.keystore -storepass 123456

在这里插入图片描述
查看证书:

keytool -list -v -keystore D:\keys\test.keystore -storepass 123456

keytool -list -rfc -keystore D:\keys\test.keystore -storepass 123456

2.导出证书:

keytool -export -alias test -keystore D:\keys\test.keystore -file
D:\keys\test.crt -storepass 123456

查看证书:

keytool -printcert -file D:\keys\test.crt

  1. 将证书tomcat.crt导入到JVM中(可选):

keytool -import -keystore %JAVA_HOME%\jre\lib\security\cacerts -file
D:\keys\test.crt -alias test
在这里插入图片描述

导出私钥

java exportpriv 是一个java工具,可以用来导出 JSSE Keystore 中的私钥。由于JDK自带的keytool不提供导出私钥功能,这个工具可以弥补这个不足。
https://github.com/472732787/ssl/blob/master/myexportpriv.jar

java -jar myexportpriv.jar D:\keys\test.keystore test 123456

把程序输入的文件保存到test.key中

Tomcat配置

tomcat目录的conf/server.xml文件
在这里插入图片描述
设置keystoreFile、keystorePass修改结果如下:

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"  
               maxThreads="150" scheme="https" secure="true"  
               clientAuth="false" sslProtocol="TLS"   
        keystoreFile="D:\keys\test.keystore"  
        keystorePass="123456" />

在这里插入图片描述

nginx配置

和Apache不一样,Nginx没有Certificat Chain这个参数,所以你要把你的证书和中间证书合并。合并证书很简单,创建一个先的文件 test-chain.crt,内容如下:
-----BEGIN CERTIFICATE-----
中的证书信息(公钥)
keytool -list -rfc -keystore D:\keys\test.keystore -storepass 123456
-----END CERTIFICATE-----
-----BEGIN PRIVATE KEY-----
用exportpriv获取的私钥
-----END PRIVATE KEY-----

 upstream   tests.com{      
	    server   127.0.0.1:8443 weight=1; 	    
    }
  server {
    listen       84 ssl;
    server_name  tests.com;
	    ssl                  on;  
	    ssl_certificate      D:\\keys\\test-chain.crt; 
    ssl_certificate_key  D:\\keys\\test.key; 
     
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
	 location / {	
	        proxy_pass https://tests.com;
	        proxy_set_header Host $host:$server_port;
             proxy_set_header X-Real-IP $remote_addr;
             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
             proxy_redirect  off;  
	     #fastcgi_param HTTPS on; 
        }

参考:https://github.com/472732787/ssl

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值