YDOOK : CentOS7 + httpd SSL 证书部署完全详细教程
1. 在进行了简单的httpd设置后,就可以为网站添加SSL证书功能了。
2. 首先得获取证书,有了证书才能添加。我们采用本地上传的方式将SSL证书上传到CentOS上。
3. 首先,判断CentOS7是否已经安装了SSL证书服务模块 mod_ssl 与 openssl:
rpm -qa mod_ssl
键入上式,没有反应就是没有安装SSL证书服务模块 mod_ssl。一般新装的CentOS7默认没有安装。
rpm -qa openssl
键入上式,没有反应就是没有安装SSL证书服务模块 openssl。一般新装的CentOS7默认有安装。为:openssl-1.0.2k-12.el7.x86_64 。
4. 安装mod_ssl 与openssl
yum install mod_ssl openssl
(用空格隔开表示两个都安装)
(如果已经安装了openssl,上述命令会直接更新openssl,更新后版本为:
openssl-1.0.2k-16.el7_6.1.x86_64,不变表示CentOS7已经安装可用安装源的最新版)
5. 经过第四步安装后,CentOS7中会自动生成 /etc/httpd/conf.d/ssl.conf 文件,ssl.conf文件就是SSL模块的配置文件。
6. 使用Filezilla或者直接输入命令行,创建文件夹:/var/www/ssl
mkdir /var/www/ssl
(注意: mkdir 与待创建目录名之间只能隔一个空格。)
7. 将从云服务商中下载的上传到之前在CentOS7上创建的,用于存放SSL证书的文件夹/ssl。
从云服务商中下载的证书为: www.域名.com.zip 的zip文件。解压,有:
Apache/
IIS/
Nginx/
Tomcat/
共四个文件夹,分别用于存放适合对应的类型的服务系统的格式的SSL证书文件。
另外还有一个:www.域名.com.csr 的csr文件。
8. 应为是配置Apache的httpd服务器系统,所以我们将只需要将Apache文件夹下面的三个ssl证书文件复制到在CentOS上创建的 /var/www/ssl 文件夹即可。
这三个ssl证书文件分别是:
1_root_bundle.crt
2_www.ydook.com.crt
3_www.ydook.com.key
9. 使用Filezilla+VSCode修改/etc/httpd/conf.d/ssl.conf文件:
对应于云服务商提供的SSL证书与Apache的ssl三证书特性,需要修改ssl.conf文件中的三个证书存放路径:
修改1:将第100行的:
SSLCertificateFile /etc/pki/tls/certs/localhost.crt 修改为:
SSLCertificateFile /var/www/ssl/2_www.ydook.com.crt
修改2:将第107行的:
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key 修改为:
SSLCertificateKeyFile /var/www/ssl/3_www.ydook.com.key
修改3:将第122行的:
#SSLCACertificateFile /etc/pki/tls/certs/ca-bundle.crt 去掉#号,修改为:
SSLCACertificateFile /var/www/ssl/1_root_bundle.crt
修改4:查看设置第70行,是否设置为:SSLEngine on ,如果不是就改为 SSLEngine on 。
修改5:将第56行的:
修改为:
<VirtualHost *:443>
修改6:将第59行的:
#DocumentRoot “/var/www/html” 去掉#号注释,修改为:
DocumentRoot “/var/www/ydook”
修改7:将第60行的:
#ServerName www.example.com:443 去掉#号注释,修改为:
ServerName www.ydook.com:443
修改8:将第64行的:
ErrorLog logs/ssl_error_log 修改为:
ErrorLog /var/www/ydook/logs/error.log
修改9:将末尾的第213行的:
CustomLog logs/ssl_request_log \ 修改为:
CustomLog /var/www/ydook/logs/access.log combined
并将下面一行的:"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x “%r” %b" 注释掉。
或者 去掉 combined 直接改为:
CustomLog /var/www/ydook/logs/access.log \ (推荐这种方法,保留通配符)
最后,重新httpd 服务,使得修改生效:
systemctl restart httpd
完成!!!
修改示例:
<VirtualHost *:443>
SSLEngine On
SSLCertificateFile /etc/pki/tls/certs/example.com.crt
SSLCertificateKeyFile /etc/pki/tls/private/example.com.key
SSLCACertificateFile /etc/pki/tls/certs/root-certificate.crt # 如果使用自签名的证书或者由 ca-certificates 提供的根证书, 请删除此行代码
<VirtualHost>
ServerAdmin info@example.com
ServerName www.example.com
DocumentRoot /var/www/example.com/public_html/
ErrorLog /var/www/example.com/logs/error.log
CustomLog /var/www/example.com/logs/access.log combined
</VirtualHost>