Apache2配置https

  • 介绍

本文介绍,配置apache2支持https,包括了单向和双向的认证。所谓单向认证,就是客户端来认证服务器是否安全;双向认证就是服务器也会验证客户端是否是安全的——网银一般都是双向的。

如果你不希望你的服务对所有的ip地址都开发的话,可以通过配置来实现,具体请看下文介绍。

  • 增加模块支持

LoadModule ssl_module modules/mod_ssl.so

注意这里的mod_ssl.so必须是能找到的路径

  • 开启https配置支持

SSLEngine on

SSLCertificateFile server.crt

SSLCertificateKeyFile server.key

这几项加入apache2的配置文件中

  • 创建服务器私钥

openssl genrsa -out server.key 1024

  • 创建签署申请

openssl req -new -out server.csr -key server.key

注意:这里的FQDN填写的域名要和实际的一样才行,不然的话,在通过浏览器访问的时候会提示证书与域名不相符。

  • 创建ca私钥

openssl genrsa -out ca.key 1024

  • 利用ca私钥产生自签名证书

openssl req -new -x509 -days 365 -key ca.key -out ca.crt

  • 利用ca为网站服务器签名证书

在当前目录创建demoCA,进入该目录后创建文件index.txt和serial,serial内容为01,以及文件夹newcerts

openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key

  • 重启服务器

service apache2 restart

  • 测试

访问https://yourserver.com

  • 向浏览器中添加证书

在浏览器的证书管理中,将上面签发的ca.crt文件导入即可。

  • 双向认证

上面的认证过程只是客户端对服务器的认证,那服务器对客户端的认证呢?

openssl genrsa -aes256 -out client.key.pem 2048

openssl req -new -key client.key.pem -out client.csr

openssl x509 -req -days 3650 -sha1 -extensions v3_req -CA ca.crt -CAkey ca.key -CAserial ca.srl -CAcreateserial -in client.csr -out client.cer

openssl pkcs12 -export -clcerts -inkey client.key.pem -in client.cer -out client.p12

最后把client.p12导入浏览器中。

  • 指定目录下的ssl

[codesyntax lang=”ini”]

如果只有SSLRequireSSL的话,就只是单向认证。

  • 禁止ip访问

从上可以看到,我们可以从目录和url两个角度来配置。最关键的是Order的配置,因为会采用最后的配置。例如:deny在后的话,就算前面被allow了,最后还是会禁止。

发表评论

电子邮件地址不会被公开。 必填项已用*标注