摘要

Apache为一款非常常见的web服务器,此文针对在apache上部署和使用SSL证书进行了详细描述。

关键词:SSL证书MysslMPKIApacheHttps

Apache的依赖

  • SSL加解密软件。建议:openssl版本1.1.0f+

注:可通过openssl version –a来进行查看。有些yum安装的,主要是看build on的日期175月前的版本最好更新下。

  • apache版本。建议:2.2.34+

注:httpd –v可查看版本号。

获取证书

证书申请颁发后,可以来获取证书。

  • MPKI方式:

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

  2. 订单——查看——证书下载pemapache)格式。

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

    1.jpg

  • MPKI方式:

  1. CSR对应的key文件。

  2. 证书邮件里提取代码,把-----BEGIN CERTIFICATE----------END CERTIFICATE-----(包括开头和结尾,不用换行)复制到txt文本文件里,然后保存为cer后缀;第二段或者还有第三段的,都保存成crt后缀。这样也就获取到apache用的3个文件了。

    2.jpg

加载SSL相关内容

  • Apache加载ssl模块

LoadModule ssl_module modules/mod_ssl.so。

注:可以到modules的目录下查找下是否有mod_ssl.so文件,没有的话,就说明需要编译带SSL模块的apache

命令:ls –ll来查找

3.jpg

有了后,看下运行程序是否有ssl加解密的库文件。

命令:ldd ../xx/xx/httpd

4.jpg

  • Apache加载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>

注:配置完成后,重启一下。

HTTP跳转HTTPS(建议非强制)

目标:客户默认的http请求,自动跳转为https。

  • 加载重写模块

LoadModule rewrite_module modules/mod_rewrite.so

  • 配置重写语句

80http)的virtualhost去配置

RewriteEngine on

RewriteCond %{SERVER_PORT} !^443$

RewriteRule (.*) https://%{SERVER_NAME}/$1 [R]

Myssl检测

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

5.jpg

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