Welcome to A!Die Software Studio |
7. 配置 Apache mod_ssl 支持双向验证的数字证书
首先用 openssl 来生成需要的证书,
1. 生成根证书并自签名
$ openssl genrsa -out ca.key -des3 1024
$ openssl req -new -key ca.key -out ca.csr
$ openssl x509 -req -in ca.csr -out ca.crt -signkey ca.key -days 36500
2. 生成服务器证书并用根证书签名
$ openssl genrsa -out server.key -des3 1024
$ openssl req -new -key server.key -out server.csr
$ openssl x509 -req -in server.csr -out server.crt -signkey server.key -CA ca.crt -CAkey ca.key -CAcreateserial -days 36500
$ openssl rsa -in server.key -out server_nopass.key
3. 生成客户端证书并用根证书签名
$ openssl genrsa -out adie.key -des3 1024
$ openssl req -new -key adie.key -out adie.csr
$ openssl x509 -req -in adie.csr -out adie.crt -signkey adie.key -CA ca.crt -CAkey ca.key -CAcreateserial -days 36500
$ openssl pkcs12 -export -clcerts -in adie.crt -inkey adie.key -out adie.pfx
然后在 Apache 的配置文件中配置证书, 这里是配置到一个单独的虚拟机种的
<VirtualHost *:443>
ServerAdmin webmaster@adintr.com
DocumentRoot /var/html/admin
ServerName admin.xxxxx.com
...
# SSL Settings
SSLEngine on
# 服务器验证使用的证书
SSLCertificateFile /srv/cert/server.crt
SSLCertificateKeyFile /srv/cert/server_nopass.key
# 客户端验证所使用的证书
SSLVerifyClient require
SSLVerifyDepth 1
SSLCACertificateFile /srv/cert/ca.crt
</VirtualHost>
配置完后重启服务器, 把 ca.crt, server.crt, adie.pfx 分发给客户端浏览器使用.
在 FireFox 中用 工具->选项->高级->查看证书 打开证书管理对话框, 把 adie.pfx 导入到 "你的证书" 中, 吧 ca.crt 导入到 "证书机构" 中, 把 server.crt 导入到 "服务器" 中. 在证书机构中选中导入的证书, 点击编辑, 确认 "此证书可标识 web 站点" 被选中. 在服务器证书中点编辑, 设置为 "信任此证书的认证".
谷歌浏览器和 IE 都是使用 Windows 的证书管理器, 双击证书文件导入即可.
pfx 格式的证书要转换为供开发使用的 PEM 格式:
openssl pkcs12 -in yourcert.pfx -out youcert.pem –nodes