用jdk生成ssl证书

C:\Program Files\Java\jdk1.8.0_131\bin>keytool -genkey -v -alias tomcat -keyalg RSA -keystore D:\keys\tomcat.keystore -validity 36500
输入密钥库口令:
再次输入新口令:
您的名字与姓氏是什么?
  [Unknown]:  weixin.xxx.com
您的组织单位名称是什么?
  [Unknown]:
您的组织名称是什么?
  [Unknown]:
您所在的城市或区域名称是什么?
  [Unknown]:
您所在的省/市/自治区名称是什么?
  [Unknown]:
该单位的双字母国家/地区代码是什么?
  [Unknown]:
CN=weixin.xxx.com, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown是否正确?
  [否]:  y

正在为以下对象生成 2,048 位RSA密钥对和自签名证书 (SHA256withRSA) (有效期为 36,500 天):
         CN=weixin.xxx.com, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown
输入 <tomcat> 的密钥口令
        (如果和密钥库口令相同, 按回车):
[正在存储D:\keys\tomcat.keystore]

找到tomcat目录下的conf/server.xml

    <Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS"
				keystorefile="D:/keys/tomcat.keystore" keystorepass="1234567" />

尝试启动tomcat,报错:

 Failed to load keystore type JKS with path C:\Users\36400/.keystore due to C:\Users\36400\.keystore (系统找不到指定的文件。)
java.io.FileNotFoundException: C:\Users\36400\.keystore (系统找不到指定的文件。)

解决:

keytool -genkey -alias tomcat -keyalg RSA
输入密钥库口令:
再次输入新口令:
您的名字与姓氏是什么?
  [Unknown]:  weixin.xxx.com
您的组织单位名称是什么?
  [Unknown]:
您的组织名称是什么?
  [Unknown]:
您所在的城市或区域名称是什么?
  [Unknown]:
您所在的省/市/自治区名称是什么?
  [Unknown]:
该单位的双字母国家/地区代码是什么?
  [Unknown]:
CN=weixin.xxx.com, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown是否正确?
  [否]:  y

输入 <tomcat> 的密钥口令
        (如果和密钥库口令相同, 按回车):

再次重启tomcat,访问https://127.0.0.1:8443/

这样还没有结束,除了https://127.0.0.1:8443/可以打开tomcat主页面外,http://127.0.0.1:8080/ 也可以打开。

这需要将访问8080端口的请求强制跳转到8443端口,打开tomcat目录下conf/web.xml,在倒数第二行添加:

	<security-constraint>
		<web-resource-collection >
              <web-resource-name >SSL</web-resource-name>
              <url-pattern>/*</url-pattern>
        </web-resource-collection>                             
       <user-data-constraint>
       <transport-guarantee>CONFIDENTIAL</transport-guarantee>
       </user-data-constraint>
	</security-constraint>

重启tomcat,发现http的请求会自动转换成https。

猜你喜欢

转载自blog.csdn.net/qq_20867981/article/details/81475366