https与http的区别有以下:
一、https协议需要到ca申请证书,一般免费证书很少,需要交费。
二、http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。
三、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
四、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
SSL协议:
SSL安全套接层协议(Secure Socket Layer),它位于TCP/IP协议与各种应用层协议之间,是一种国际标准的加密及身份认证通信协议,为TCP提供一个可靠的端到端的安全服务,为两个通讯个体之间提供保密性和完整性(身份鉴别)。SSL协议可分为两层:SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。
以下是重点配置:
(1)需要有.keystore证书文件,这个是要用钱买的,或者用jdk自带的keytool创建个私人证书,只是这个证书在公网上不承认。
1)cmd进入%JAVA_HOME%/bin目录,执行命令keytool -genkey -alias tomcat -keyalg RSA -keystoreF:\tomcat.keystore -validity 36500
参数简要说明:“F:\tomcat.keystore”含义是将证书文件保存在F盘,证书文件名称是tomcat.keystore ;“-validity 36500”含义是证书有效期,36500表示100年,默认值是90天
2)在命令行填写必要的参数:
A、输入keystore密码:此处需要输入大于6个字符的字符串
B、“您的名字与姓氏是什么?”这是必填项,并且必须是TOMCAT部署主机的域名或者IP[如:gbcom.com 或者 10.1.25.251],就是你将来要在浏览器中输入的访问地址
C、“你的组织单位名称是什么?”、“您的组织名称是什么?”、“您所在城市或区域名称是什么?”、“您所在的州或者省份名称是什么?”、“该单位的两字母国 家代码是什么?”可以按照需要填写也可以不填写直接回车,在系统询问“正确吗?”时,对照输入信息,如果符合要求则使用键盘输入字母“y”,否则输入“n”重新填写上面的信息
D、输入<tomcat>的主密码,这项较为重要,会在tomcat配置文件中使用,建议输入与keystore的密码一致,设置其它密码也可以,之后找到设置生成的文件,将它复制粘贴到服务器上/etc/ tomcat.keystore
(2)配置tomcat服务器,首先做的是配置文件的备份,没有备份的情况下还是少动配置文件,一旦改错了服务器奔溃就GG。需要改动server.xml及web.xml文件,所以先备份下再进行修改。
(3)打开$CATALINA_HOME/conf/server.xml,修改如下,
<Connectorport="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
修改参数 =>
<Connector port="80"protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="443" />
<!--
<Connectorport="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS"/>
-->
去掉注释且修改参数 =>
<Connector port="443"protocol="HTTP/1.1" SSLEnabled="true"maxThreads="150" scheme="https" secure="true"clientAuth="false" sslProtocol="TLS" keystoreFile="/etc/tomcat.keystore" keystorePass="www.gbcom.com.cn"/>
注释:keystoreFile和keystorePass的两个参数,分别是证书文件的位置和<tomcat>的主密码,在证书文件生成过程中做了设置
<!--
<Connector port="8009" enableLookups="false"protocol="AJP/1.3" redirectPort="8443" />
-->
修改参数=>
<Connectorport="8009" enableLookups="false"protocol="AJP/1.3" redirectPort="443" />
(4)在tomcat\conf\web.xml中的</welcome-file-list>后面加上这样一段:
<login-config>
<!-- Authorization setting forSSL -->
<auth-method>CLIENT-CERT</auth-method>
<realm-name>ClientCert Users-only Area</realm-name>
</login-config>
<security-constraint>
<!-- Authorization setting for SSL -->
<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>
(5)然后重启Apache服务,或者直接reboot服务器,URL地址栏可以输入http,它会自动跳转到https
(6)注意事项:
1)生成证书的时间,如果IE客户端所在机器的时间早于证书生效时间,或者晚于有效时间,IE会提示“该安全证书已到期或还未生效”。
2)如果IE提示“安全证书上的名称无效或者与站点名称不匹配”,则是由生成证书时填写的服务器所在主机的域名“您的名字与姓氏是什么?”/“What is your first and last name?”不正确引起的。
3)有的公司是有防火墙做限制,所以需要咨询下运维人员,在公网访问时,有没有需要开通防火墙访问443端口的访问权限,要不然会无法访问。
4)在公网上,如果公司将网站放在cdn上,可能存在cdn缓存,需要特殊处理。
以上有我参照他人文章编写,以及我个人总结出来的问题,盲人摸象般探索,站在他人的肩膀上完成配置,感谢原文章作者。