最近想在网站上加一个SSL,让网站可以HTTPS访问,使数据更加安全,网站更稳定。
找了两个免费SSL
- 阿里云免费SSL,是由赛门铁克公司颁发
- Let’s Encrypt 免费SSL,据说很厉害的样子
于是这两个都试了一下,不能马上就上官网,所以用万网几块钱买的ECS做测试,测试环境是phpstudy
网上教程很少,但综合了很多手动安装证书的教程,最后还是完成了。
其实很简单,申请证书完成之后,将证书导入apache即可,至于IIS,应该更简单因为都是图形界面。
这里先只说apache的。
使用阿里云免费SSL,申请后需要验证域名归属,设置一个TXT的@记录即可,然后通过后,下载证书。在下载的时候就有介绍,不过我用他的方法没成功,在网上找了另一个方法成功导入。
以下是效果,依次是谷歌、火狐、360
对于phpstudy来说,默认是开着SSL的,不需要设置,直接改配置文件即可。将以下内容添加至httpd.conf 或者vhosts.conf都可以。我是加到vhosts里面了,这样方便整理。如果你会配置,那也可以新建一个vhostsSSL.conf并从httpd.conf里面来引入此配置文件,做到更好的区分。
至于绑定主机名之类的操作,可以百度搜索apache 配置 vhosts
以下内容是配置阿里免费SSL,如想使用Let’s Encrypt直接把路径、加密方式、协议改了即可。下面详细介绍Let’s Encrypt
Listen 443
<VirtualHost *:443>SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
SSLCertificateFile "E:/phpStudy/apache/cert/public.pem"
SSLCertificateKeyFile "E:/phpStudy/apache/cert/一长串数字.key"
SSLCertificateChainFile "E:/phpStudy/apache/cert/chain.pem"
DocumentRoot "E:/phpStudy/WWW"
<Directory />
Options +Indexes +FollowSymLinks +ExecCGI
AllowOverride All
Order allow,deny
Allow from all
Require all granted
</Directory>
</VirtualHost>
在windows下申请Let’s Encrypt我使用的是letsencrypt-win-simple.V1.9.5.0-beta1 非常方便。
下载完解压后,运行letsencrypt.exe 大概是下面这种样子 ,由于我已经申请过了,可能跟第一次运行不一样,所以可以忽略图片。请看文字。
运行程序
第一项,会要求你输入邮箱,我输入了,直到申请完成也没收到什么邮件。
第二项,同意它的协议
第三项,选择模式,就是上图中的灰色字,W: F: M: Q: 自己翻译一下即可,在这里选择M,手动配置
第四项,输入域名
第五项,输入网站绝对路径(程序会在网站路径下新建一个.well-known文件夹并在里面添加验证文件,不要删除)
第六项,然后会有一些滚动的命令闪过
最后,提示你是否新建计划任务来维持证书永久有效
其实所有步骤,复制一下,翻译,大概就能看懂了。没什么特别难的,这里只是申请证书,在第六项滚动命令时会下载到某个目录,并提示你下载到哪里了,注意看程序窗口的信息。
我的是在C:/ProgramData/letsencrypt-win-simple/httpsacme-v01.api.letsencrypt.org/ 下面
然后就跟阿里云配置一样了,把路径改一下即可,尽量不要改证书路径。
SSLCertificateFile "C:/ProgramData/letsencrypt-win-simple/httpsacme-v01.api.letsencrypt.org/域名.xin-crt.pem"
SSLCertificateKeyFile "C:/ProgramData/letsencrypt-win-simple/httpsacme-v01.api.letsencrypt.org/域名.xin-key.pem"
SSLCertificateChainFile "C:/ProgramData/letsencrypt-win-simple/httpsacme-v01.api.letsencrypt.org/域名.xin-chain.pem"
加上
SSLHonorCipherOrder on
SSLProxyProtocol all -SSLv2 -SSLv3
SSLProxyCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
至于PHP的OPENSSL,我这里没开。可以正常使用。
如果你用的不是phpstudy,但也是apache的,那么看一下httpd.conf里面 LoadModule ssl_module modules/mod_ssl.so 是否开启
其实总结下来步骤很简单
- 申请证书
- 下载证书
- 配置
如果说加上之后没有出现上面那种绿锁,是因为你自己网站代码中还有http的链接,查看源代码,查找http://,找到并改一下,使所有申请域名的链接都是https的就可以了。
不要看我的网站,我的网站是万网的虚拟空间,不支持。