Httpd服务器证书部署

Httpd的依赖

l  SSL卸载驱动。建议:openssl版本1.1.0f+

l  Httpd版本(即apache)。建议:2.2.34+

获取证

  • MPKI方式:

1.       登录https://mpki.trustasia.com

2.       证书下载pemapache)格式。

会得到一个zip的压缩包,解压后有三个文件,分别是cercrtkey后缀的

  • 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

80http)的virtualhost去配置:

RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R]

检测

https的端口没做限制后(防火墙放行,端口转发正常),到https://myssl.com进行检测。

 

评级达到B以上,在安全和兼容方面是较不错的。