OpenSSL生成密钥证书
如果是付费的一般都会有现成的密钥证书,可以略过此步。
1.1 进入openssl目录
在要生成证书的目录下建立几个文件和文件夹,目录结构如下
1 2 3 4
| |-- demoCA |-- demoCA/newcerts |-- demoCA/index.txt |-- demoCA/serial
|
在serial文件中写入第一个序列号“01”
1.2 设置openssl配置文件地址
1
| # set OPENSSL_CONF= <配置文件地址>
|
1.3 生成CA根证书
1
| # openssl req -new -x509 -keyout ca.key -out ca.crt -days 8000
|
输入以上命令后,按提示依次国家缩写、省名、城市名、公司名、部门名、主机名、邮箱
Ps:以上各选项只能输入英文,不然会乱码
1.4 生成客户端密钥
1
| # openssl genrsa -out client.key 1024
|
1.5 生成证书请求
1
| # openssl req -new -out client.csr -key client.key
|
输入以上命令后,按提示依次国家缩写、省名、城市名、公司名、部门名、主机名、邮箱、密码、公司别名
Ps:以上各选项只能输入英文,不然会乱码
1.6 用CA证书为server.csr做签名
1
| # openssl ca -in client.csr -out client.crt -cert ca.crt -keyfile ca.key -days 8000
|
1.7 导出成浏览器能导入的证书
1
| # openssl pkcs12 -export -inkey client.key -in client.crt -out client.p12
|
这里需要输入密码(这里的密码就是导入证书时要用到的密码)
这一步主要是生成一个可导入的证书,如果只是想开启单向认证可以略过此步。
1.8 移动证书与密钥
我们将当前目录下的 ca.crt、ca.key、client.csr、client.crt、client.key、client.p12 都拷贝到 conf/ssl-client 目录下,没有就创建。
Apache开启方法
2.1 修改 http.conf 文件
2.1.1 添加443端口的监听
2.1.2 去掉下面行首的 # 号(加入ssl模块)
2.2 修改需要开启ssl的域名配置文件(示例)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| <VirtualHost *:443> ServerAdmin www.test.com DocumentRoot "D:/wamp/www/test" ServerName test.com ErrorLog "logs/test.com-error.log" CustomLog "logs/test.com-access.log" common SSLEngine on SSLCertificateFile "<server.crt本地路径>" SSLCertificateKeyFile "<server.key本地路径>" SSLCACertificateFile "<ca.crt路径>" SSLCertificateChainFile "<client.crt路径>" SSLVerifyClient require SSLVerifyDepth 10 <Directory "D:/wamp/www/test"> AllowOverride None Options None Order allow,deny Allow from all </Directory> </VirtualHost>
|
以上步骤完成后,重启Apache。这时再访问我们的网址就会提示 SSL 连接出错 ,我们只要双击刚刚生成的 client.p12 证书进行导入后,就可以正常访问了。
如果在Windows下遇到Apache启动不了的情况,可以进入 我的电脑->管理->事件检查器->应用程序日志 ,打开apache的错误报告,会有提示哪里出错了,一般都可以找到原因。
Nginx 开启方法
Nginx开启相对简单,只要修改配置文件就可以了。
配置文件基本内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| server { ssl on; ssl_certificate <client.crt路径> ssl_certificate_key <server.key路径> ssl_protocols SSLv3 TLSv1; ssl_ciphers HIGH:!ADH:!EXPORT56:RC4+RSA:+MEDIUM; ssl_prefer_server_ciphers on; ssl_verify_client on; ssl_client_certificate <ca.crt路径> location ~ \.php{ fastcgi_param HTTPS on; } }
|
以上的目录路径和文件名都是可以自定义的,不一定要按照我的来。