网站安全之HTTPS部署解决方案
What
HTTPS全称为Hypertext Transfer Protocol over Secure Socket
Layer,中文含义为“超文本传输协议在安全加密字层”,简单来说就是加密数据传输,通俗的说就是安全连接。
它是一个安全通信通道,它基于HTTP开发,用于在客户计算机和服务器之间交换信息。
它使用安全套接字层(SSL)进行信息交换,简单来说它是HTTP的安全版。
Why
- 确认网站真实性(网站身份认证):用户可以确保自己访问的不是一个钓鱼欺诈网站,增加网站的公信力(这个网站是被权威认证机构承认的)
- 保证信息传输的机密性:保证用户的信息不被窃取泄露(数据传输时使用一个安全的通道来保证数据安全性,机密性)
- 像苹果,微信小程序,Android等也在推崇使用Https,所以我们公司项目部署Https也是大势所趋
SSL
SSL证书通过在客户端浏览器和Web服务器之间建立一条SSL安全通道
由于SSL技术已建立到所有主要的浏览器和WEB服务器程序中,因此,仅需安装服务器证书就可以激活该功能了)
####域名型SSL证书(DV SSL)
即只对域名的所有者
####企业型 SSL 证书(OV SSL)
是要购买者提交组织机构资料和单位授权信等在官方注册的凭证,认证机构在签发SSL证书前不仅仅要检验域名所有权,还必须对这些资料的真实合法性进行多方查验,只有通过验证的才能颁发SSL证书。
####增强型 SSL 证书(EV SSL)
与其他SSL证书一样,都是基于SSL/TLS安全协议,都是用于网站的身份验证和信息在网上的传输加密。它跟普通SSL证书的区别也是明显的,安全浏览器的地址栏变绿,如果是不受信的SSL证书则拒绝显示,如果是钓鱼网站,地址栏则会变成红色,以警示用户。
How
- 如何申请
2. 选择一个证书颁发机构
- 如何填写
点击下一步
选择手动验证DNS
然后我们进行手动的DNS验证
- 手动DNS验证
-
- 通过解析指定的DNS记录验证您的域名所有权,指定的解析格式如下:
主机记录 –> CName记录类型 –> 记录值
例如为申请证书的域名 www.exx.com 添加一条记录类型为CNAME的DNS记录:sr5jtl1xxxxxxxmygdps.domain.com –> CNAME –> s2015xxxxxxxx.domain.com,以云解析平台为例说明如何进行操作:
- 添加域名
-
- 点击【添加域名】,输入您要解析域名的主域名exx.com,并点【确定】
- 添加解析记录
-
- 点击刚添加的域名【解析】
-
- 点击【添加记录】
- 完成指定的CNAME记录添加
- CNAME记录即将域名指向另一个域名,再由另一个域名提供ip地址:
记录类型选择为CNAME
主机记录处填子域名,比如需要添加sr5jtl1xxxxxxxmygdps.domain.com的解析,只需要在主机记录处填写sr5jtl1xxxxxxxmygdps即可,不需要填写主域名domain.com
线路类型选择默认
记录值为CNAME指向的域名,只可以填写域名,此处为s2015xxxxxxxx.domain.com,注意记录值须完整填写
TTL选择默认值10分钟即可
解析添加成功后如下:
sr5jtl1xxxxxxxmygdps.domain.com 的指向系统会定时检查,若能检测到并且与指定的值匹配,即可完成域名所有权验证。
至此就完成了域名的正常Https解析
-
如何配置
-
- 证书的获取
-
- 首先到证书管理页面选择证书然后点击下载证书
Apache文件夹内获得证书文件
- 1_root_bundle.crt,
- 2_www.e**.com_cert.crt
- 3_www.e**.com.key,私钥文件
当你设置秘钥后下载的文件夹中将会出现Tomcat能使用的证书文件(Tomcat不能直接使用.crt和.key文件…这里不做细说)
其中
1_root_bundle.crt 文件包括一段证书代码 “-----BEGIN CERTIFICATE-----”和“-----END
CERTIFICATE-----”,
2_www.e**.com_cert.crt 文件包括一段证书代码 “-----BEGIN
CERTIFICATE-----”和“-----END CERTIFICATE-----”,
3_www.e**.com.key 文件包括一段私钥代码“-----BEGIN RSA PRIVATE
KEY-----”和“-----END RSA PRIVATE KEY-----”。
-
证书安装
-
- 编辑Apache根目录下 conf/httpd.conf 文件,找到 LoadModule ssl_module modules/mod_ssl.so 和 Include conf/extra/httpd-ssl.conf,
去掉前面的#号注释;
- 编辑Apache根目录下 conf/httpd.conf 文件,找到 LoadModule ssl_module modules/mod_ssl.so 和 Include conf/extra/httpd-ssl.conf,
-
证书
找到Apache根目录\conf\extra下的httpd-vhosts.conf文件
编辑该文件
顶部添加
监听443端口
Listen 443
下方添加节点
<VirtualHost *:443>
DocumentRoot "d:/wamp/vhosts/www.exx.com"
ServerName www.exx.com
ServerAlias www.exx.com
SSLEngine on #开启SSL引擎
SSLCertificateFile "d:/xx/ssl/2_www.exx.com.crt" #SSL证书位置
SSLCertificateKeyFile "d:/xx/ssl/3_www.exx.com.key"#SSL秘钥位置
SSLCertificateChainFile "d:/xx/ssl/1_root_bundle.crt"#SSl证书位置
SSLProtocol all -SSLv2 -SSLv3 #SSL协议版本
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
#SSL加密套接字
<Directory "d:/wamp/vhosts/www.exx.com">
SetOutputFilter DEFLATE
Options FollowSymLinks ExecCGI
Require all granted
AllowOverride All
Order allow,deny
Allow from all
DirectoryIndex index.html index.php
</Directory>
</VirtualHost>
Finally
重启服务器
看看你的网站是否添加Https前缀可以访问了呢?