https分为单项认证和双向认证。
一般https页面上的访问都是单项认证,服务端发送数字证书给客户端,客户单方面验证。而服务端不做验证。
而双向认证,需要双方都有证书,然后发送给对方进行验证。一般用于企业应用对接。
单项认证
准备工作:
1.首先使用cmd进入到jdk的keytool工具目录下,我的路径D:Program Files (x86)jdk1.8.0_77jrebin,之后的keytool语句就在cmd执行。
2.在D盘创建个ssl文件夹。
开始:
1.服务端创建密钥对及密钥库。
keytool -genkey -alias Tomcat -keypass 123456 -keyalg RSA -keysize 2048 -validity 365 -storetype JKS -keystore D:/ssl/keystore.jks -storepass 123456
回车之后会显示如图,这第一条信息【CN】一般写你要绑定的域名或IP地址【高版本的浏览器不能随便写,否则也提示不安全】,然后下边的信息可以根据自己情况写。
然后我们看一下密钥库里的信息
keytool -list -v -keystore D:/ssl/keystore.jks
回车输入密码后
我们的密钥对已经生成了。
然后我们去配置下tomcat,我用的tomcat7,tomcat8可能会和本配置不同,请自行查找配置方法。
找到tomcat的server.xml
添加如下配置:
<Connector port="8443" protocol="org.Apache.coyote.http11.Http11Protocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
keystoreFile="D:/ssl/keystore.jks"
keystorePass="123456"
truststoreFile="D:/ssl/keystore.jks"
truststorePass="123456"
clientAuth="false" sslProtocol="TLS" sslEnabledProtocols="TLSv1,TLSv1.1,TLSv1.2" />
注意:clientAuth="false",这个参数值如果为true为双向认证,false为单项认证,我们用false。
启动tomcat访问下https://localhost:8443看下
然后点击【证书信息】
可以看到这个证书就是配在服务端的证书,这样就对了。至于证书风险,是因为证书不在浏览器的“受信任的根证书颁发机构”造成的,安装后就不显示了。