Apache配置SSL证书

配置SSL证书

一、查找配置文件

开始配置之前您需要找到位于客户机上的 Apache 配置文件 httpd.conf。
( Windows 客户机上的配置文件地址通常乎会位于所用集成环境的安装文件 /Apache/conf 文件夹内)

二、开启 mod_ssl 模块

  1. 请使用 Notpad++ 编辑器(不要使用 Windows 记事本)打开查找到 httpd.conf 配置文件。
  2. 在编辑器内按下查找快捷键 Control+F 唤出内容查找器,输入 mod_ssl.so 并点击查找。
  3. 去除下面两行之前的 # 号,并保存配置文件。
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule ssl_module modules/mod_ssl.so

三、开启Apache SSL功能

继续编辑配置文件 httpd.conf,在文件末尾增加下列内容并保存:

Listen 443
SSLCipherSuite HIGH:MEDIUM:!MD5:!RC4
SSLProxyCipherSuite HIGH:MEDIUM:!MD5:!RC4
SSLHonorCipherOrder on
SSLProtocol all -SSLv3
SSLProxyProtocol all -SSLv3
SSLPassPhraseDialog builtin
SSLSessionCache     "shmcb:logs/ssl_scache(512000)"
SSLSessionCacheTimeout  300

四、准备证书文件

请您以 .crt 结尾或 .pem 结尾的证书、CA 证书链文件和以 .key 结尾的私钥文件上传至 httpd.conf 配置文件所在目录下的 ssl 文件夹内(若无 ssl 文件夹请创建)
为了方便理解,这里假设我们上传的证书和私钥文件为:

ssl/mydomain.pem
ssl/ca-chain.pem
ssl/mydomain.key

五、创建网站的SSL配置文件

在 httpd.conf 配置文件所在的目录下面,为需要配置证书的网站新建一个 SSL 配置文件,名以网站域名命令,如:mydomain-ssl.conf、mydomain-ssl.conf的文件内容如下:

<VirtualHost *:443>
DocumentRoot "\www\mydomain"
ServerName mydomain.com:443
ServerAlias www.mydomain.com
ErrorLog "logs/error_log"
TransferLog "logs/access_log"

SSLEngine on
SSLCertificateFile "/conf/ssl/mydomain.pem"
SSLCertificateKeyFile "/conf/ssl/mydomain.key"
SSLCertificateChainFile "/conf/ssl/ca-chain.pem"
</VirtualHost>

保存站点SSL配置文件

六、激活站点SSL功能

再次编辑 httpd.conf 配置文件,在文件末尾增加一行:

Include conf/mydomain-ssl.conf

保存配置文件。
使用集成环境的控制面板或命令行重启 Apache ,配置完成。

开启强制https跳转

一、创建伪静态文件

进入到项目根目录文件夹下,创建一个空白文件 .htaccess(如果存在该文件,直接编辑该文件),将下列代码粘贴至 .htaccess 文件内容最后面

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

二、测试

保存正在编辑的 .htaccess 文件。清除浏览器缓存,重新访问您的网站域名查看跳转效果。

开启强制HSTS

一、查找配置文件

在开启配置之前,需要找到 Apahce 的主配置文件 httpd.conf。

二、开启 mod_headers.so 模块

请使用 Notpad++ 编辑器(不要使用 Windows 记事本)打开查找到 httpd.conf 配置文件。
在编辑器内按下查找快捷键 Control+F 唤出内容查找器,输入 mod_headers.so 并点击查找。
去除下面这行之前的#号,并保存配置文件。

LoadModule headers_module modules/mod_mod_headers.so

三、查找已经开启 SSL 的站点配置文件

在客户机上查找站点配置文件,站点配置文件通常位于 httpd.conf、vhost-ssl.conf、vhost.conf 或者自定义的配置文件内。
为了方便理解,这里我们假设找到的 SSL 站点配置文件为 mydomain-ssl.conf

四、开启站点 HSTS

插入 HSTS 代码

Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"

编辑配置 mydomain-ssl.conf 内容如下

<VirtualHost *:443>
DocumentRoot "\www\mydomain"
ServerName mydomain.com:443
ServerAlias www.mydomain.com
ErrorLog "logs/error_log"
TransferLog "logs/access_log"

SSLEngine on
SSLCertificateFile "/conf/ssl/mydomain.pem"
SSLCertificateKeyFile "/conf/ssl/mydomain.key"
SSLCertificateChainFile "/conf/ssl/ca-chain.pem"
Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"
</VirtualHost>

保存您正在编辑的配置文件

五、重启和测试

重新启动您的 Apache,清除浏览器缓存,访问2次查看效果。
您也可以通过chrome浏览器的开发者选项→网络项查看服务器返回的头信息,来判断是否已经开启HSTS

根据您对HSTS的配置,所查看到的 Strict-Transport-Security 配置值可能不一样。

恭喜您!您的网站已经开启 HSTS 安全策略。