推荐产品
CentOS中Apache服务器HTTPS配置方法
Web服务器在默认的情况下,都是使用的纯文本协议HTTP。与其名称描述的一样,纯文本协议不会对传输中的数据进行任何形式的加密,其在安全方面有重大缺陷。经过HTTP协议传输的数据就像是在裸奔一样很容易被”中间人”窃取。恶意用户甚至可以在传输路径设置一个假冒的WEB服务器冒名顶替实际的目标Web服务器。在这种情况下,用户可能实际上与假冒者服务器进行通信。这样,恶意用户可以通过精心设计的表单欺骗终端用户获取到敏感信息,如用户名密码。
为了解决HTTP协议存在的安全隐患,很多站点如网上银行、购物网站、金融证券交易网站、政府机构网站等需要在web服务器部署SSL证书应用HTTPS加密协议。HTTPS加密协议是HTTP的安全版本,由ssl+http协议构建,可进行加密传输和身份认证,比http协议更加安全。 HTTPS能够为站点提供至少以下2大保障。
1、确保所有经过服务器传输的数据包都是经过加密的。
2、对网站服务器真实身份进行认证,避免被假冒。
那么,站点如何实现HTTPS加密协议呢?首先您需要到合法CA机构如沃通CA申请一张SSL数字证书。对于个人站点或者不涉及敏感信息的站点,可以申请沃通免费SSL证书,对于全球性商业网站(银行、购物、支付类),建议购买高级别的EV SS证书,不仅能保证站点数据安全,还能提高站点服务商的信誉。如何在CentOS配置Apache的HTTPS服务,这里以自签证书(仅用于测试)为例:
如果CentOS已经安装了Apache Web服务器,我们需要使用OpenSSL生成自签名证书。如果尚未安装OpenSSL,它可以使用yum来安装。
# yum install mod_ssl openssl
【生成一个自签名证书】
下面的命令可以被用来产生一个自签名的证书。首先,生成2048位的加密私钥。
# openssl genrsa -out ca.key 2048
【生成证书签名请求(CSR)】
# openssl req -new -key ca.key -out ca.csr
【生成X509自签名证书】
# openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt
【创建证书后将文件复制到对应目录】
# cp ca.crt /etc/pki/tls/certs/
# cp ca.key /etc/pki/tls/private/
# cp ca.csr /etc/pki/tls/private/
【配置Apache Web服务器】
首先,修改下面的配置文件:
# vim /etc/httpd/conf.d/ssl.conf
### overwrite the following parameters ###
SSLCertificateFile /etc/pki/tls/certs/ca.crt
SSLCertificateKeyFile /etc/pki/tls/private/ca.key
### The following parameter does not need to be modified in case of a self-signed certificate. ###
### If you are using a real certificate, you may receive a certificate bundle. The bundle is added using the following parameters ###
SSLCertificateChainFile /etc/pki/tls/certs/example.com.ca-bundle
然后重新启动httpd服务使更改生效。
# service httpd restart
执行到该步骤,Web服务器现在可以使用HTTPS了。
【调整虚拟主机】
Apache Web服务器可以配置为多个Web站点。这些站点在httpd的配置文件中以虚拟主机的形式定义。例如,让我们假设我们的Apache Web服务器托管站点为freessl.wosign.com,网站所有的文件都保存在/var/www/html/freessl目录。
虚拟主机HTTP配置:
# vim /etc/httpd/conf/httpd.conf
NameVirtualHost *:80
ServerAdmin email@example.com
DocumentRoot /var/www/html/freessl
ServerName freessl.wosign.com
我们可以参考上面的配置创建HTTPS虚拟主机。
# vim /etc/httpd/conf/httpd.conf
NameVirtualHost *:443
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/ca.crt
SSLCertificateKeyFile /etc/pki/tls/private/ca.key
AllowOverride All
ServerAdmin email@example.com
DocumentRoot /var/www/html/freessl
ServerName freessl.wosign.com
需要按照上面的配置,定义每个虚拟主机。添加虚拟主机后,重新启动Web服务。
# service httpd restart
现在的虚拟主机就可以使用HTTPS了。
可选的配置:
强制Apache Web服务器始终使用HTTPS
如果由于某种原因,你需要站点的Web服务器仅使用HTTPS,您需要将所有HTTP请求(端口80)重定向到HTTPS(端口443)。 Apache Web服务器可以容易地做到这一点。
1、强制网站使用HTTPS访问
如果要强制网站使用HTTPS,httpd文件配置如下:
# vim /etc/httpd/conf/httpd.conf
ServerName www.example.com:80
Redirect permanent / https://www.example.com
# service httpd restart
2,强制虚拟主机使用HTTPS
如果要强制在虚拟主机上使用HTTPS,配置如下:
# vim /etc/httpd/conf/httpd.conf
ServerName freessl.wosign.com
Redirect permanent / https://freessl.wosign.com/
# service httpd restart
总之,但站点存在用户注册登录、购买支付等交互时,HTTPS访问是大家一直推崇的访问方式,可以提供服务器的安全性。另外,服务器SSL证书也可根据自己需求去选择各种不同的SSL证书。