在这篇文章中,我们将介绍如何生成和部署自签名证书,使得HTTP服务更换为HTTPS服务,保证数据的安全性。
1、准备工作
(1)CentOS已经安装Apache Web服务器。
(2)使用OpenSSL生成自签名证书。如果尚未安装OpenSSL,它可以使用yum来安装。
yum install mod_ssl openssl
2、生成自签名证书
(1)生成2048位的加密私钥
openssl genrsa -out test.key 2048
(2)生成证书签名请求csr
openssl req -new -key test.key -out test.csr
(3)生成类型为X509的自签名证书
openssl x509 -req -days 365 -in test.csr -signkey test.key -out test.crt
3、配置Apache Web服务器
(1)将证书复制到相应文件目录下
cp test.crt /etc/pki/tls/certs/
cp test.key /etc/pki/tls/private/
cp test.csr /etc/pki/tls/private/
(2)
修改配置文件 /etc/httpd/conf.d/ssl.conf
# 修改下面参数
SSLCertificateFile /etc/pki/tls/certs/test.crt
SSLCertificateKeyFile /etc/pki/tls/private/test.key
#如果使用的是认证官方证书,可能需要修改下面参数;自签名证书忽略这个参数即可
SSLCertificateChainFile /etc/pki/tls/certs/example.com.ca-bundle
(3)重启httpd服务,使更新配置生效
<span style="font-size:24px;">service httpd restart</span>
4、调整虚拟主机
Apache Web服务器可以配置为多个Web站点。这些站点在httpd的配置文件中以虚拟主机的形式定义。例如,让我们假设我们的Apache Web服务器托管站点为www.example.com,网站所有的文件都保存在/var/www/html/virtual-web目录。对于虚拟主机,典型的HTTP配置/etc/httpd/conf/httpd.conf。
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin email@example.com
DocumentRoot /var/www/html/virtual-web
ServerName www.example.com
</VirtualHost>
修改后
NameVirtualHost *:443
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/test.crt
SSLCertificateKeyFile /etc/pki/tls/private/test.key
<Directory /var/www/html/virtual-web>
AllowOverride All
</Directory>
ServerAdmin email@example.com
DocumentRoot /var/www/html/virtual-web
ServerName www.example.com
</VirtualHost>
5、强制Apache Web服务器始终使用https
由于安全需求,Web服务器仅使用HTTPS,需要将所有HTTP请求(端口80)重定向到HTTPS(端口443)。 Apache Web服务器可以容易地做到这一点。
(1)强迫主站使用 /etc/httpd/conf/httpd.conf
ServerName www.example.com:80
Redirect permanent / https://www.example.com
(2)强迫虚拟主机使用
<VirtualHost *:80>
ServerName www.example.com
Redirect permanent / https://www.example.com/
</VirtualHost>