原文: https://www.cnblogs.com/zhangzb/p/5200418.html 原博客写的更加详细
前言:因为公司小程序要调用后台数据,小程序那边只能调用https的接口,然后我就上网研究了下tomcat启用https协议
第一步,打开cmd命令行工具,cd 到jdk的bin目录下
其中keystore就是你要把那个证书生成在哪个位置,(这个文件夹的位置要提前建好)后面会用到, storepass 为获取keystore信息的密码
keytool -genkey -alias tomcat -keypass 123456 -keyalg RSA -keysize 1024 -validity 365 -keystore D:/keys/tomcat.keystore -storepass 123456
使用keystore命令生成证书 ,执行如下命令,回车后执行如下图
点击回车后即可在D://keys下生成keystore的文件
第二步:为客户端生成证书
接下来再输入这个命令
keytool -genkey -alias client1 -keypass 123456 -keyalg RSA -keysize 1024 -validity 365 -storetype PKCS12 -keystore D:/keys/client1.p12 -storepass 123456
回车后执行效果跟上面差不多
第三步: 让服务器信任客户端证书
keytool -export -alias client -keystore D:/keys/client.p12 -storetype PKCS12 -keypass 123456 -file D:/keys/client.cer
注意:Keypass:指定CER文件的密码,但会被忽略,而要求重新输入
2、将该文件导入到服务器的证书库,添加为一个信任证书:
keytool -import -v -file D:/keys/client.cer -keystore D:/keys/tomcat.keystore -storepass 123456
完成则可以通过命令查看服务器的证书库 keytool -list -v -keystore D:/keys/tomcat.keystore
注意:(这里需要输入密钥库密码),我的话则输入123456 好像jdk1.7以上还是啥的这个密码是看不到的
第四步:让客户端信任服务证书
1、由于是双向SSL认证,客户端也要验证服务器证书,因此,必须把服务器证书添加到浏览器的“受信任的根证书颁发机构”。
由于不能直接将keystore格式的证书库导入,必须先把服务器证书导出为一个单独的CER文件,使用如下命令:
keytool -keystore D:/keys/tomcat.keystore -export -alias tomcat6 -file D:/keys/server.cer
2、双击server.cer文件,按照提示安装证书,将证书填入到“受信任的根证书颁发机构”。
填入方法:
打开浏览器 - 工具 - internet选项-内容- 证书-把中级证书颁发机构里的www.localhost.com(该名称即时你前面生成证书时填写的名字与姓氏)证书导出来-再把导出来的证书导入 受信任的根颁发机构 就OK了。
生成的安全证书就差不多是这样的
第五步.配置Tomcat服务器
1.打开tomcat安装目录,找到conf下的server.xml文件 将原来注释部分放开,放上我们刚刚生成的签名文件
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" keystoreFile="D:/keys/tomcat.keystore" keystorePass="123456" />