一、获取SLL证书
1.CA机构签发的https证书
需要到CA机构申请,收费,正式项目这个可以委托甲方申请。这里提供几个权威的CA机构:
申请通过之后会下发证书和秘钥,txt文件中会有秘钥。
2.本地自签名证书
本地测试的话就没必要去申请CA认证,可以通过JDK自己给自己下发证书:
首先,进入jdk的bin路径下,在此处按住shift+右键,打开Powershell窗口,执行下面的命令
keytool -genkey -v -alias keystoreKey -keyalg RSA -validity 3650 -keystore F:\apache-tomcat-8.5.59\conf\tomcat.keystore
keytool -genkey:使用默认的算法生成公钥和私钥
-alias 名称 :证书的别名,
-keyalg:制定密钥的算法,如果需要制定密钥的长度,可以再加上keysize参数,密钥长度默认为1024位,使用DSA算法时,密钥长度必须在512到1024之间,并且是64的整数倍
-validity:证书的有效日期,默认是90天,这里设置的3650天
-keystore:参数可以指定密钥库的名称,密钥库其实是存放秘钥和证书文件,会将生成的证书存放到指定的目录下。
接下来会让输入部分信息:
注意:名字与姓氏是域名,本地可以直接指定localhost,剩下的可以直接回车,最后一个是否正确输入 y
这样在F:\apache-tomcat-8.5.59\conf\下就生成了秘钥库文件
二、服务器中使用https请求
这里以tomcat为例,windows环境下
找到tomcat conf目录下的server.xml文件,全局搜索https,如果没有复制下面的代码到文件中,其中port是项目访问端口号,keystoreFile是生成的秘钥库文件,keystorePass是生成秘钥库文件时的密码
<Connector port="50101" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="F:/apache-tomcat-8.5.59/conf/tomcat.keystore"
keystorePass="123456" />
我这里直接将http请求给毙掉了,切换的https请求;这里还可以设置成将http请求强制转换成https请求,只需将http请求的Connector放开,将本地环境处 port换成8443,8443是默认的转发接口,可以给成别的,只需保证redirectPort和port一致就行。
接下来需要在web.xml中设置https属性:在web.xml文件中搜索: 在后面加上下面这段代码
<!--强制使用https,http请求会自动转为https -->
<login-config>
<auth-method>CLIENT-CERT</auth-method>
<realm-name>Client Cert Users-only Area</realm-name>
</login-config>
<!--配置网站支持https,/* 表示全部请求都走https, transport-guarantee 标签设置为 CONFIDENTIAL以便使应用支持 SSL。 如果需要关闭 SSL ,将 CONFIDENTIAL 改为 NONE 即可 -->
<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>
--------完成 ----------
测试
在浏览器地址栏输入项目地址,这里可能会出现下面这种情况,点击继续前往
这里可以单击 不安全查看证书有效期
点击证书