出于安全的考虑,一是确实能带来一点安全性提升,二是让用户看起来安全,一些网站开始要使用https协议来提供服务(web,api),刚好我们新产品是面向企业级的用户,需要提供https服务和接口,所以就遇到了配置问题。
首先这篇文章是在你申请好了https(ssl)证书之后该干的事。本文介绍是linux系统下的apache2的https配置,windows下的基本相同,就是一些文件的路径写法不一样还有模块的安装不一样。
使用apache2的话,他自己内建了(build-in)mod_ssl 模块,不需要额外编译和安装,如果你用的apache1.*系列的,可以使用 sudo yum install mod_ssl 来给apache安装mod_ssl
如果是内建的mod_ssl, 不需要再httpd.conf里面配置LoadModule,默认是可以直接用的,如果是自己安装的,则需要LoadModule一下。下面讲具体配置
1. 首先你申请到https证书后,服务提供商会给你如下几个文件。
server.crt
server.key
ca.pem
sub.class1.server.ca.pem
说明一下, server.crt 是服务提供商颁发给你的证书,是一个纯文本文件,一般以
—–BEGIN CERTIFICATE—–
开头,以
—–END CERTIFICATE—–
结尾,前后都没有多余的空格。
server.key就是这个证书的私钥文件,用来解密用的,也是一个纯文本文件,以
—–BEGIN RSA PRIVATE KEY—–
开头,以
—–END RSA PRIVATE KEY—–
结尾,首位也都不带空格。
另外两个*.pem文件,是CA证书,其中ca.pem是root证书,sub.class1.server.ca.pem 则是颁发证书的网站给你的的这个https的证书的服务商证书,也就是说你要认证你的https(ssl)证书必须先通过这个sub.class1.server.ca.pem再通过ca.pem来完成整个链路的验证.
2. 接下来就是apache配置证书文件的路径了
先把上述文件都统一放到一个目录,要注意保障文件的安全,不要被盗用或者删除。这里我们放在 /var/www/ssl 目录下面
打开httpd-ssl.conf文件(一般在%apache安装目录%/conf/extra下面
首先配置证书文件:
SSLCertificateFile “/var/www/ssl/server.crt”
SSLCertificateKeyFile “/var/www/ssl/server.key”
cat sub.class1.server.ca.pem ca.pem > ca.chain.pem.crt
SSLCertificateChainFile “/www/var/ssl/ca.chain.pem.crt”
ProxyPass / ajp://localhost:7204/
ProxyPassReverse / ajp://localhost:7204/