美文网首页全站https我爱编程
Apache安装https-免费SSL证书Let’s Encry

Apache安装https-免费SSL证书Let’s Encry

作者: 王乐城愚人云端 | 来源:发表于2017-06-06 14:54 被阅读447次
    原本并非打算从http升级到https,但遭到了电信挟持,在网站中强行插入了电信广告,因此被迫只能升级到https。
    还好,升级到https并没有想象中的那么复杂。
    以下会讲到自签名证书的安装和免费SSL证书Let`s Encrypt的安装
    
    • 自签名证书:无需使用第三提供的SSL证书,实现https,但浏览器会提示该签名不安全,但仍然可以使用https访问,适用于自己的测试服务器或个人服务器

    • 使用免费SLL证书:使用到了第三方提供的SSL证书,实现https,一切正常,企业使用也没问题,但Let`s Encrypt提供的证书每隔90天就要重新申请一次

    一、自签名证书安装

    1. 安装相关工具

    yum install mod_ssl openssl
    

    2.生成签名文件(默认生成在当前目录下)

    首先,生成2048位的加密私钥

    openssl genrsa -out server.key 2048
    

    然后,生成证书签名请求(CSR),这里需要填写许多信息,如国家,省市,公司等

    openssl req -new -key server.key -out server.csr
    

    最后,生成类型为X509的自签名证书。有效期设置3650天,即有效期为10年

    openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
    

    3.把签名文件复制到指定目录下

    创建证书后,将文件复制到对应的目录。

    cp server.crt /etc/pki/tls/certs/
    cp server.key /etc/pki/tls/private/        
    cp server.csr /etc/pki/tls/private/
    

    4.修改apache的全局ssl.conf

    sudo vi /etc/httpd/conf.d/ssl.conf
    

    仅仅需要把其中的签名文件引用路径改成我们第3步复制的路径

    SSLCertificateFile /etc/pki/tls/certs/server.crt
    SSLCertificateKeyFile /etc/pki/tls/private/server.key
    

    5.修改虚拟主机设置

    <VirtualHost *:443>
      ServerAdmin admin@example.com
      DocumentRoot "/data/wwwroot/"
      ServerName www.example.com:443
      SSLEngine on
      SSLCertificateFile /etc/pki/tls/certs/server.crt
      SSLCertificateKeyFile /etc/pki/tls/private/server.key
      略
    </VirtualHost>
    

    6.修改添加端口监听

    vi /usr/local/apache/conf/httpd.conf
    
    Listen 443 https
    

    7.如果你设置了防火墙,请在防火墙中开启443端口

    如果是firewalld的可以使用下面命令

    sudo firewall-cmd --add-service=http
    sudo firewall-cmd --add-service=https
    sudo firewall-cmd --runtime-to-permanent
    

    如果是iptables的可以使用下面命令

    sudo iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT
    sudo iptables -I INPUT -p tcp -m tcp --dport 443 -j ACCEPT
    

    8.重启apache

    apachectl restart 或者 service httpd restart(oneInStack环境)
    

    9.提示

    如果浏览器提示签名不安全,是正常现象,仍然可以强行访问https,此时说明已经安装成功。
    其实实现https的主要是以下两个签名生成的文件的生成和引入

    server.crt
    server.key
    

    二、使用免费SLL证书

    1.先解除443端口的占用

    如果你已经使用了443端口,比如你已经安装了自签名证书,并开启了https,此时apache已经占用了443端口,那么你在安装letsencrypt会提示443端口已经被占用,无法绑定,所以我们提前先解除apache对443端口的监听,并暂时移出vhost下443的虚拟主机

    vi /usr/local/apache/conf/httpd.conf
    
    ## Listen 443 https 暂时注释掉这行
    
    apachectl restart 或者 service httpd restart(oneInStack环境) 重启apache
    

    2.下载letsencrypt项目,并进入该目录,执行生成免费SSL证书命令

    git clone https://github.com/letsencrypt/letsencrypt
    cd letsencrypt
    ./letsencrypt-auto certonly --standalone --email YOUREMAIL@XXX.com -d YOURDOMAIN.com -d www.YOURDOMAIN.com 请用你自己的邮箱和域名
    

    看到Congratulations说明生成免费SSL成功
    证书会生成在 /etc/letsencrypt/live/YOURDOMAIN.com/目录下

    3.修改apache的全局ssl.conf

    sudo vi /etc/httpd/conf.d/ssl.conf
    
    SSLCertificateFile /etc/letsencrypt/live/YOURDOMAIN.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/YOURDOMAIN.com/privkey.pem
    

    4.修改添加端口监听

    vi /usr/local/apache/conf/httpd.conf
    
    Listen 443 https
    

    5.如果你设置了防火墙,请在防火墙中开启443端口

    如果是firewalld的可以使用下面命令

    sudo firewall-cmd --add-service=http
    sudo firewall-cmd --add-service=https
    sudo firewall-cmd --runtime-to-permanent
    

    如果是iptables的可以使用下面命令

    sudo iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT
    sudo iptables -I INPUT -p tcp -m tcp --dport 443 -j ACCEPT
    

    6.重启apache

    apachectl restart 或者 service httpd restart(oneInStack环境)
    

    7.提示

    使用免费SLL证书:使用到了第三方提供的SSL证书,实现https,一切正常,企业使用也没问题,但Let`s Encrypt提供的证书每隔90天就要重新申请一次
    其实实现https的主要是以下两个签名生成的文件的生成和引入

    fullchain.pem
    privkey.pem
    

    来自作者的小留言

    • 本文原创,允许任意转载,但请按以下格式转载
      转载自简书-王乐城愚人云端:+【本文链接】
    • 我的小博客:愚人云端

    相关文章

      网友评论

        本文标题:Apache安装https-免费SSL证书Let’s Encry

        本文链接:https://www.haomeiwen.com/subject/lbigfxtx.html