Httpd服务器证书部署
Httpd的依赖
l SSL卸载驱动。建议:openssl版本1.1.0f+
l Httpd版本(即apache)。建议:2.2.34+
获取证书
- MPKI方式:
1. 登录https://www.easyssl.com.cn。
2. 证书下载pem(apache)格式。
会得到一个zip的压缩包,解压后有三个文件,分别是cer,crt和key后缀的
- 非MPKI方式:
1. CSR对应的key文件
2. 证书邮件里提取代码,把-----BEGIN CERTIFICATE-----到-----END CERTIFICATE-----(包括开头和结尾,不用换行)复制到txt文本文件里,然后保存为cer后缀;第二段或者还有第三段的,都保存成crt后缀。这样也就获取到apache用的3个文件了。
加载ssl配置
- 让配置加载
LoadModule ssl_module modules/mod_ssl.so
注:
这可能在conf.modules.d目录下的00-ssl.conf,也可能在httpd.conf,也可能在http-ssl.conf里,版本不一样,目录结构不一样,自然就不一样。
- 让配置加载ssl配置
IncludeOptional conf.d/*.conf
注:
这里加载的写法很多,主要加载配置ssl的配置目录
SSL相关配置
到ssl.conf去
注意开启443端口的监听
Listen 443 https
然后对要使用证书的virtualhost进行配置
<VirtualHost _default_:443>
DocumentRoot "/myproject" #项目目录
SSLEngine on
SSLProtocol all -SSLv2 –SSLv3
SSLHonorCipherOrder On
SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256
SSLCertificateFile /xx/xx/domain.cer
SSLCertificateKeyFile /xx/xx/domain.key
SSLCertificateChainFile /xx/xx/domain_ca.crt
</VirtualHost>
ECC+RSA双证书部署(可选)
Httpd版本2.4+
<VirtualHost _default_:443>
DocumentRoot "/myproject" #项目目录
SSLEngine on
SSLProtocol all -SSLv2 –SSLv3
SSLHonorCipherOrder On
SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256
SSLCertificateFile /xx/xx/domain.cer #ECC证书
SSLCertificateKeyFile /xx/xx/domain.key
SSLCertificateFile /xx/xx/domain.cer #RSA证书
SSLCertificateKeyFile /xx/xx/domain.key
SSLCertificateChainFile /xx/xx/domain_ca.crt #ECC+RSA的证书链合并
</VirtualHost>
http跳转https(建议非强制)
让用户请求自然变成https,加载:
LoadModule rewrite_module modules/mod_rewrite.so
到80(http)的virtualhost去配置:
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R]