https://startssl.com 这个网站可以给我们免费提供可信任的https证书,这里简单介绍一下配置的过程。
首先服务器需要安装openssl和apache的mod_ssl.so模块,并且需要在httpd.conf中开启这个模块。
完成上述操作之后就可以使用openssl生成你自己的证书了。
这里有些知识你需要了解一下。
https的整个服务中,你需要了解这些文件的作用:
server.key 服务器的私钥
server.crt 服务器的证书文件
server.csr 服务器证书请求文件
root.crt 根证书
这些文件是这样生成的
首先运行
1 | openssl req -new -nodes -keyout chorder.net.key -out chorder.net.csr |
生成服务器证书和服务器证书请求文件,过程中会要求输入很多有关证书的信息和密码。
这一步完成之后会生成两个文件,chorder.net.key和chorder.net.csr
这时候去startssl网站上注册帐号,然后提交自己生成的.csr文件,让startssl为你生成一个
服务器证书和根证书。
把两个.crt结尾的证书拷贝到服务器的/etc/pki/tls/certs/下,把.key和.csr文件拷贝到/etc/pki/tls/private/下。(只针对CentOS服务器,其他服务器请自行百度)。
另外还需要将/etc/pki/tls/下的cert.pem(如果没有则创建一个)链接指向到/etc/pki/tls/certs/root.crt
这样用火狐浏览器访问的时候才不会报 SEC_ERROR_UNKNOWN_ISSUER 这个错误。
这个cert.pem就是证书链,只有当你的服务器证书包含在startssl网站的证书链中,客户端才会认为你的证书是可信的。
最后,修改两个文件。
1 /etc/httpd/conf.d/ssl.conf
在该文件中修改以下内容:
指定服务器证书
1 | SSLCertificateFile /etc/pki/tls/certs/chorder.net.crt |
指定服务器私钥
1 | SSLCertificateKeyFile /etc/pki/tls/private/chorder.net.key |
指定服务器证书链
1 | SSLCertificateChainFile /etc/pki/tls/certs/root-bundle.crt |
2 /etc/httpd/conf/httpd.conf
为你的主机(我这里是虚拟主机)创建配置
我的配置如下
NameVirtualHost *:443
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/chorder.net.crt
SSLCertificateKeyFile /etc/pki/tls/private/chorder.net.key
SSLCertificateChainFile /etc/pki/tls/cert.pem
ServerName chorder.net
ServerAdmin ×××××
DocumentRoot ×××××
ErrorLog ×××××
CustomLog ×××××
</VirtualHost>
其实就是http配置文件下多加了几行。
配置好这些以后,重启服务,完成。
另外,如果你希望访问你的域名直接跳转到https端口,可以写一段js来跳转,如果觉得
写代码太麻烦,可以在根目录的.htaccess文件中加入这两行来帮你自动跳转:
1 | RewriteCond %{SERVER_PORT} !^443$ |
这样就将默认端口指定为443,并且将所有http的请求重写为https.