此文章是本人工作记录,写的不好请见谅。主要内容是:介绍HTTPS搭建的整个过程,包含“SSL证书申请方法”、“SSL证书相关介绍”、“Tomcat下配置方法”以及“对外端口的配置方法”。到此,你肯定已经知道这是一篇技术贴,不感兴趣的朋友就绕道吧,下面我要开始讲正式内容了。
当下,政府网站、大型企/事业网站、电商平台、交易平台等越来越多的网站开始从HTTP转向更安全的HTTPS超文本协议。如果你对HTTPS不够了解,只要记住一个公式: HTTPS=HTTP+SSL。公式不官方,能帮助你理解就行。H TTPS的好处我就不多绍了,简单说就是这个协议会让网站更多安全!所以毋庸置疑,这是趋势。
我公司在近期的项目中,应客户要求需要使用HTTPS。借此机会,有幸进一步学习。然而在此之前,我对HTTPS仅限于平时看到的,查过一些资料,并没有自己亲自动手搭建过。对此项任务充满未知,在汇报工作时给自己预留了1-2周的时间(实践证明时间充足)。
总体步骤:
S1:根据实际情况确定购买的SSL服务类型
S2:找SSL代理商,购买服务
S3:提供客户资料,用于申请证书
S4:等待审核,一般为2-5天左右
S5:收到邮箱返回证书代码
S6:生成证书
S7:配置TOMCAT
S8:配置兼容性
S9:配置域名访问协议
任务通知下来,我像往常一样淡定的、微笑着开始了一天的工作。鬼知道我心里的波涛汹涌。废话不说,赶紧回座位补习姿势。成果如下:
STEP1:根据实际情况确定购买的SSL服务类型
1. SSL证书分类,按照安全级别分3类,这个表格应该能一目了然。
2. 按照使用范围分为3类
单域名、多域名、通配符域名。
简单解释一下:多域名指一个证书可以被多个域名使用,通配符是指缀名相同的二级域名(如:x1.jschina.com.cn,x2.jschina.com.cn)都可用。
3. 证书品牌
赛门铁克(Symantec)是 SSL/TLS 证书的领先提供商,这个应该是最好最贵的了。
Comodo科摩多
GeoTrust是全球第二大数字证书颁发机构。
等等其他。。。
STEP2:找SSL代理商,购买服务
了解差不多了,上网找服务商,汇报完成购买。结合客户的要求,我们给客户选定了“DV SSL”的“通配符”版本。
STEP3:提供客户资料,用于申请证书
STEP4:等待审核,一般为2-5天左右
STEP5:收到邮箱返回证书代码
问客户要企业相关资料用于注册,在服务商的帮助下得到BEGIN PRIVATE KEY。要保存好这个KEY以后有大用处。申请完成后,进行漫长的等待(证书厂商会打电话到客户公司去确认身份,所以信息务必填写正确)。
STEP6:生成证书
收到邮件后,得到证书码 CERTIFICATE,通过服务商的方法生成证书 pfx,生成证书的时候会得到自己设置密码,记住它,有大用处。
本文很多情况下在服务商的帮助下完成,论一个好服务商的重要性。生成证书的时候比较麻烦,耐心点。
STEP7: 配置TOMCAT
得到证书后,可以说离成功已经不远了。但是,注意啦注意啦,前面是在服务商的帮助下完成的,下面就得靠自己动手了。我们服务是在TOMCAT下搭建的,下面介绍的是TOMCAT下的配置,其他平台搭建可参考对应的方法。
-
- 第一步:将证书 pfx拷贝到服务器上和TOMCAT同目录(也可视自己情况而定)。我们服务器操作系统是Linux,证书位置:/appdata/java/xxx.pfx
- 第二步:修改TOMCAT配置:找到 apache-tomcat-7.0.47/conf/server.xml,<Connector port="8443" 标签,增加如下属性
keystoreFile="/appdata/java/xxx.pfx"
keystoreType="PKCS12"
keystorePass="pfx格式证书的密码"
- 此处,你要知道http默认端口是80,https端口是443。所以你需要将8443端口改为443,才能直接输入域名访问。
此时,若你着急忙慌的重启TOMCAT,你会发现已经能够启动,而且域名https也能够使用。不要高兴的太早,还没有大功告成。经过测试:360、谷歌可以用了,但IE、火狐等浏览器无法使用,这就尴尬了。。。
STEP8: 配置兼容性
完成最后一步,还是找到server.xml文件只要修改,在刚才的地方加上一段: ciphers="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_RC4_128_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA,SSL_RSA_WITH_RC4_128_SHA"
最终<Connectorport="443" 这一段完整配置如下:
<Connectorport="8088" protocol="HTTP/1.1" URIEncoding="UTF-8"
maxThreads="150"SSLEnabled="true" scheme="https" secure="true"
keystoreFile="/appdata/java/xxx.pfx "
keystoreType="PKCS12"
keystorePass="pfx格式证书的密码"
clientAuth="false"sslProtocol="TLS" ciphers="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_RC4_128_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA,SSL_RSA_WITH_RC4_128_SHA" />
到此,重启TOMCAT你已经可以通过 https://你的域名来访问你的网站。
但你会发现, 如果你只在浏览器里输入你的域名,还是会跳到http而不是https,若想实现此效果,接着往下看。
STEP9: 配置域名访问协议
操作需要2个步骤:
- n 配置server.xml文件,
在server.xml中找到http的端口配置
<Connectorport="80" protocol="HTTP/1.1"
connectionTimeout="20000" URIEncoding="UTF-8"
redirectPort="8443"/>
将此处的8443,改为443。
<Connectorport="80" protocol="HTTP/1.1"
connectionTimeout="20000" URIEncoding="UTF-8"
redirectPort="443"/>
- n 配置apache-tomcat-7.0.47/conf/web.xml文件
找到</welcome-file-list>,然后在后面追加
<login-config>
<!-- Authorization settingfor SSL -->
<auth-method>CLIENT-CERT</auth-method>
<realm-name>Client CertUsers-onlyArea</realm-name>
</login-config>
<security-constraint>
<!-- Authorization settingfor 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>
重启TOMCAT访问,确认没有问题,你就可以歇息了。