Apache服务器配置https

https://startssl.com这个网站可以给我们免费提供可信任的https证书,这里简单介绍一下配置的过程
首先服务器需要安装openssl和apache的mod_ssl.so模块,并且需要在httpd.conf中开启这个模块。
完成上述操作之后就可以使用openssl生成你自己的证书了。
这里有些知识你需要了解一下。
https的整个服务中,你需要了解这些文件的作用:

    server.key 服务器的私钥
    server.crt 服务器的证书文件
    server.csr 服务器证书请求文件
    root.crt   根证书

这些文件是这样生成的
首先运行

    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网站的证书链中,客户端才会认为你的证书是可信的。

最后,修改两个文件。
一是/etc/httpd/conf.d/ssl.conf,修改如下内容

指定服务器证书

    SSLCertificateFile /etc/pki/tls/certs/chorder.net.crt

指定服务器私钥

    SSLCertificateKeyFile /etc/pki/tls/private/chorder.net.key

指定服务器证书链(来自start com)

    SSLCertificateChainFile /etc/pki/tls/certs/root-bundle.crt

然后是修改/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文件中加入这两行来帮你自动跳转:

    RewriteCond %{SERVER_PORT} !^443$
    RewriteRule (.*) https://%{SERVER_NAME}/$1 [R]

即,将默认端口指定为443,并且将所有http的请求重写为https.

猜你喜欢

转载自www.cnblogs.com/Chorder/p/9114483.html