设置apache服务器的访问证书,支持https访问,windows
windows下载安装openssl
http://slproweb.com/products/Win32OpenSSL.html
windows证书的生成
安装成功后命令行执行
1.私钥,生成的文件默认在系统用户目录下
openssl genrsa -des3 -out server.key 2048
2.生成csr文件(签署申请文件)【生成证书请求文件CSR】该命令先进入交互模式,让你填一堆东西,参考下图
openssl req -new -out server.csr -key server.key
要注意的是Common Name这里,要填写成使用SSL证书(即:https协议)的域名或主机名,否则浏览器会认为不安全。例如:如果以后打算用https://study.dev/xxx 这里就填写study.dev
3.生成CA的key文件【生成CA的证书】
前面提过X.509证书的认证者总是CA或由CA指定的人,所以得先生成一个CA的证书
openssl req -new -x509 -key server.key -out ca.crt -days 3650
4.最后用第3步的CA证书给自己颁发一个证书玩玩
openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey server.key -CAcreateserial -out server.crt
执行完以后,cert目录下server.crt 就是我们需要的证书。当然,如果要在google等浏览器显示出安全的绿锁标志,自己颁发的证书肯定不好使,得花钱向第三方权威证书颁发机构申请(即:第4步是交给权威机构来做,我们只需要提交server.csr,哦,还有毛爷爷就好了)
apache配置证书
1.apache配置文件中对应域名配置里面加入ssl证书配置的内容
<VirtualHost *:80> ServerAdmin v_lihuan1@xdf.cn DocumentRoot "D:/www/htdocs" ServerName study.dev ServerAlias study.dev ErrorLog "logs/study.dev-error.log" CustomLog "logs/study.dev-access.log" common <Directory /> Options FollowSymLinks AllowOverride All RewriteEngine on RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^(.*)?$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R] </Directory> </VirtualHost>
2.讲生成好的证书文件放在apache的对应目录下
3.修改对应的ssl配置文件(extra目录下的)
<VirtualHost _default_:443> DocumentRoot "D:/www/htdocs" ServerName study.dev:443 SSLEngine on SSLCertificateFile "conf/ssl.crt/server.crt" SSLCertificateKeyFile "conf/ssl.key/server.key" SSLCertificateChainFile conf/ssl.crt/server.crt </VirtualHost>
4.重启apache(确保HOST文件已经添加了对应的域名)