一、为什么要部署https?
部署HTTPS网站最大的好处就是安全,能够保护用户的隐私,很多电商网站,由于涉及用户的金钱,会很自然地考虑安全问题,所以电商网站是部署HTTPS最有动力的企业,通过部署HTTPS网站避免用户受到攻击,避免用户受到诈骗,也能让自己的企业数据更安全。
可很多企业觉得自己的网站没有十分重要的数据,不支持HTTPS好像问题不大,实际情况是如此吗?即使网站本身没有很重要的数据,但是HTTP网站很容易被劫持,用户访问的页面可能被插入广告,影响用户的体验;同时用户可能仅仅浏览了网站的几个HTTP页面,攻击者就会了解用户的浏览行为,隐私毫无保障。
从网站拥有者的角度来看,具备一定规模的网站必然有自己的核心数据,数据来源于自己的用户,是最宝贵的资产,需要谨慎对待,也有义务保证数据不泄露。如果企业还在犹豫网站是否有隐私数据,可以看下网站是否有用户注册入口,如果有,那么就有必要在用户和自己的服务之间构建一条安全的通道,保证用户不会泄露私密数据,比如用户的口令信息。
二、httpd配置步骤
1.部署证书和密钥对
获取证书的方式有三种:
-
自签名证书,如果开发者只是想测试HTTPS,最快速的途径就是生成自签名证书,非常方便。
-
Let’s Encrypt证书,可以使用免费CA机构签发的证书。
-
使用收费CA机构签发的证书,如果对证书安全性、兼容性、功能有特殊需求,可以向CA机构申请证书。
本文选用了生成自签名证书的方式。
(1)生成私钥对和CSR
CSR(Certificate Signing Request)表示证书签名请求,其中包含了服务器的密钥对,CA机构接收到请求后会验证CSR请求的签名。
openssl req -newkey rsa:1024 -nodes -keyout example-key.pem -out example-csr.pem
输入以上命令后,会有一些交互式提示,最重要选项则是域名信息,可以选择多个,在本例中为www1.example.com域名生成一张证书。
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State] :Beijing
Locality Name (eg, city) [] :Beijing
Organization Name (eg, company) [Internet Widgits Pty Ltd] :examplecompany
Organizational Unit Name (eg, section) []:exampleunit
Common Name (e.g. server FQDN or YOUR name) [] :wwwl.example.com
Email Address []:admin@example.com
openssl req命令最终生成两个文件,example-key.pem表示密钥对文件,example-csr.pem表示CSR文件。
(2) 生成自签名证书
接下来通过CSR生成证书,对于自签名证书,读者可以认为自己就是一个CA机构,生成证书命令很简单,输入如下命令即可:
openssl x509 -signkey example-key.pem -in example-csr.pem -req -days 365 -out example-cert.pem
2.配置ssl.conf
如果没有安装Apache,安装并启用ssl模块:
# 安装
yum install httpd httpd-devel mod_ssl
显示Apache版本:
# httpd -v
Server version: Apache/2.4.34 (Unix)
Server built: Oct 19 2020 17:37:02
配置HTTPS:
# 编辑配置文件
vim /etc/httpd/conf.d/ssl.conf
Listen 443 https
<VirtualHost _default_:443>
ServerName xxxx.xx.xx
SSLCertificateFile example-cert.pem
SSLCertificateKeyFile example-key.pem
</VirtualHost>
重新启动httpd:
systemctl restart httpd