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"]
<Directory /var/www/html>
	SSLRequireSSL
        Options Indexes FollowSymLinks
        AllowOverride All 
        Require all granted
        Allow from all
        SSLVerifyClient require
        SSLVerifyDepth  10
</Directory>
[/codesyntax] 如果只有SSLRequireSSL的话,就只是单向认证。
  • 禁止ip访问
[codesyntax lang="php"]
<Location /wp-login.php>
        Order deny,allow
        Deny from all
        Allow from 192.168.0/24
</Location>

<Directory /var/www/plugins/>
        AllowOverride All
        Allow from 192.168.1.0/24
</Directory>
[/codesyntax] 从上可以看到,我们可以从目录和url两个角度来配置。最关键的是Order的配置,因为会采用最后的配置。例如:deny在后的话,就算前面被allow了,最后还是会禁止。

你可能感兴趣的:(apache,https)