本文刊发于《网络安全和信息化》2019年第9期
HTTPS(全称:Hyper Text Transfer Protocol overSecure Socket Layer 或 Hypertext Transfer ProtocolSecure,超文本传输安全协议),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即在HTTP下加入SSL层,HTTPS的安全基础是SSL。https是一个URI scheme(抽象标识符体系),句法类同http体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司(Netscape)进行,并内置于其浏览器Netscape Navigator中,提供了身份验证与加密通讯方法。现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。
那么我们可以这样理解:网站没有使用HTTPS的时候,浏览器一般会报不安全,而且在别人访问这个网站的时候,很有可能会被运营商劫持,然后在网站里显示一些莫名其妙的广告。有HTTPS的时候,通俗地讲所有的数据传输都会被加密,你和网站之间的数据交流也就更加安全。
一、申请CA证书:
如果要启用HTTPS,我们就需要从证书授权机构处获取一个证书,便宜SSL是一家国内的SSL证书提供商,从https://www.pianyissl.com/#/order/buy 就可以申请拥有免费证书。登录后,选择“体验版单域名SSL”的”免费测试”,根据提示操作并通过验证即可。
二、 获取服务器证书文件
下载证书ZIP压缩包,会得到多个证书,包括:IIS、Apache、Tomcat、Nginx等多种WEB服务器的证书。
三、搭建HTTPS安全网站。
1、Windows IIS7/8安装
1)将证书压缩包后解压,找到压缩后的目录里的“/IIS/”目录下的server.pfx文件,放到服务器中。
2)进入IIS管理控制台的服务器证书管理页面,右键选择“导入”,选择server.pfx文件,并输入密钥文件保护密码(即IIS/目录下的password.txt中的密码内容),并勾选“标志此密钥为可导出”,否则有些情况可能会无法完成证书安装。。
3)选中需要配置证书的站点,并选择右侧“编辑站点”下的“绑定” ,选中您刚才安装的服务器证书文件,配置默认的https访问端口443,重启IIS并使用https方式访问测试站点证书安装。(一定保证防火墙允许443端口)。
4)重启动IIS后即可以https方式访问此网站了。
2、Nginx 安装服务器证书
复制 server.key、server.crt 文件到 Nginx 安装目录下的 conf 目录。
打开 Nginx 安装目录下 conf 目录中的 nginx.conf 文件
找到如止下内容:
#HTTPS server
#
#server {
#listen 443;
#server_name localhost;
#ssl on;
#ssl_certificate cert.crt;
#ssl_certificate_key cert.key;
#ssl_session_timeout 5m;
#ssl_protocols SSLv2 SSLv3 TLSv1;
#ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MED IUM:+LOW:+SSLv2:+EXP;
#ssl_prefer_server_ciphers on;
#location / {
#root html;
#index index.html index.htm;
# }
#}
将其修改为
server {
listen 443;
server_name localhost;
sslon;
ssl_certificate server.crt;
ssl_certificate_key server.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphersECDH:AESGCM:HIGH:!RC4:!DH:!MD5:!aNULL:!eNULL;
ssl_prefer_server_ciphers on;
location / {
roothtml;
index index.html index.htm;
}
}
保存退出,并重启 Nginx。
通过 https 方式访问您的站点,测试站点证书的安装配置。
3. Apache 2.2.* 的配置
打开apache安装目录下conf目录中的httpd.conf文件,找到
#LoadModule ssl_module modules/mod_ssl.so
#Include conf/extra/httpd-ssl.conf
删除行首的配置语句注释符号“#” ,保存退出。
打开apache安装目录下conf/extra目录中的httpd-ssl.conf文件 ,在配置文件中查找以下配置语句
SSLCertificateFile conf/ssl.crt/server.crt #将服务器证书配置到该路径下
SSLCertificateKeyFile conf/ssl.key/server.key #将服务器证书私钥配置到该路径下
#SSLCertificateChainFile conf/ssl.crt/ca.crt 删除行首的“#”号注释符,并将CA证书 ca.crt配置到该路径下,保存退出,并重启Apache。
另外,建议在httpd-ssl.conf里进行如下操作:
1). 添加SSL 协议支持语句,关闭不安全的协议和加密套件:
SSLProtocol all -SSLv2 -SSLv3
2).修改加密套件如下:
SSLCipherSuiteAESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL;
4.Tomcat SSL证书配置
请准备好.jks文件 定位到tomcat的安装目录,找到conf下的server.xml文件,找到相应的代码,按照您服务器实际情况修改配置文件:
<Connector port="443" protocol="HTTP/1.1"SSLEnabled="true"
maxThreads="150" scheme="https"secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="keystore.jks"
keystorePass="password.txt中的密码内容"
ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256"
/>
5、phpStudy环境如何安装SSL
修改apache目录下的httpd.conf配置文件。
#LoadModule ssl_module modules/mod_ssl.so #删除行首的配置语句注释符号“#”。
#Include extra/httpd-ssl.conf #将这行的注释的“#”去掉
编辑extra/httpd-ssl.conf文件,修改如下内容:
ServerName 后面改成你的网站域名,可以不带端口号
DocumentRoot后面改成网站路径
SSLCertificateFile 后面改成server.crt文件路径
SSLCertificateKeyFile 后面改成server.key文件路径
SSLCertificateChainFile 后面改成ca.crt文件路径
ErrorLog 这行开头的可以注释掉(前面加#号)
TransferLog 这行开头的可以注释掉(前面加#号)
CustomLog 这行开头的可以注释掉(前面加#号)
phpstudy配置指定路径访问https(此步可以不做)。
RewriteEngine on
RewriteCond %{REQUEST_URI} /homework
RewriteRule^(.*)?$ https://%{SERVER_NAME}$1[L,R]
保存退出,并重启Apache。