美文网首页工作生活HTTPS
Let's Encrypt免费SSL证书的申请及使用(Ubunt

Let's Encrypt免费SSL证书的申请及使用(Ubunt

作者: 走在架构师的路上 | 来源:发表于2019-07-03 15:47 被阅读0次

    简介

    Let's Encrypt 是一个免费、开放,自动化的证书颁发机构,由 ISRG(Internet Security Research Group)运作。ISRG 是一个关注网络安全的公益组织,其赞助商包括 Mozilla、Akamai、Cisco、EFF、Chrome、IdenTrust、Facebook等公司。ISRG 的目的是消除资金和技术领域的障碍,全面推进网站从HTTP到HTTPS过度的进程。

    目前,包括FireFox、Chrome在内的主流浏览器都支持Let's Encrypt证书,已经有不少用户在真实项目中使用Let's Encrypt证书。Let's Encrypt免费SSL证书的有效期是90天,到期后可以再续期,这样也就可以变相长期使用了。

    官方网站:https://letsencrypt.org/
    项目主页:https://github.com/letsencrypt/letsencrypt
    

    使用

    1. 获取Let's Encrypt免费SSL证书

    首先,我们需要从 https://github.com/letsencrypt/letsencrypt 
    上下载 letsencrypt-auto 脚本,
    使用它能够很方便地完成域名验证和SSL证书的获取。
    
    # 使用git下载脚本
    $ git clone https://github.com/letsencrypt/letsencrypt
    
    # 进入到脚本所在目录
    $ cd letsencrypt
    
    # 查看 letsencrypt-auto 工具的用法
    $ ./letsencrypt-auto --help
    

    这里只对几个重要的命令参数进行说明:

    参数名 解释说明
    run 获取并安装证书到当前的Web服务器
    certonly 获取或续期证书,但是不安装
    renew 在证书快过期时,续期之前获取的所有证书
    -d DOMAINS 一个证书支持多个域名,用逗号分隔
    --apache 使用 Apache 插件来认证和安装证书
    --standalone 运行独立的 web server 来验证
    --nginx 使用 Nginx 插件来认证和安装证书
    --webroot 如果目标服务器已经有 web server 运行且不能关闭,可以通过往服务器的网站根目录放置文件的方式来验证
    --manual 通过交互式方式,或 Shell 脚本手动获取证书

    关于域名验证和证书的获取安装,上面提到了5种方式:--apache, --standalone, --nginx, --webroot 和 --manual,请根据实际情况选择其一。再次重申,笔者使用的是公司的其中一台测试机,上面没有跑 Apache 和 Nginx,单独运行的 Tomcat,然后通过 iptables 进行端口转发(将 80 端口的请求转发到 8080,将 443 端口的请求转发到 8443),并且已完成域名解析。因此,笔者选择采用 --standalone 方式进行域名验证和证书获取。

    2.获取证书

    ./letsencrypt-auto certonly --standalone --email xxxxxxx@qq.com -d quqianzhao.top -d www.quqianzhao.top
    

    1.注意将上面的邮箱和域名替换成自己的。上面命令中的 certonly 表示只获取证书,不安装;-d 有两个,表示将要获取的SSL证书绑定两个域名。

    2.上面的命令在执行过程中,会有两次确认。命令执行完成后,如果看到提示信息"Congratulations! Your certificate and chain..."就说明证书创建成功了,如下图所示。

     /etc/letsencrypt/live/
    

    3.Tomcat7配置Let's Encrypt免费SSL证书

    从上图(证书获取成功的提示信息)可以看出,获取到的 Let's Encrypt 证书保存在 /etc/letsencrypt/live/域名名称/ 目录下,相关的证书文件有4个:
    cert.pem
    chain.pem
    fullchain.pem
    privkey.pem
    我们需要用到的是后面两个证书文件: fullchain.pem 和 privkey.pem。接下来,还需要用到 Linux 下的 openssl 和 keytool 工具,将SSL证书由 .pem 格式转换成 Tomcat 所支持的 .jks 格式。

    4.导出.p12格式的证书

    openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem -out zyxx_letsencrypt.p12 -name tomcat_letsencrypt
    

    5.再将证书由.p12格式转换成.jks格式

    keytool -importkeystore -deststorepass 'zxxx_123' -destkeypass 'zxxx_123' -destkeystore zyxx_letsencrypt.jks -srckeystore zyxx_letsencrypt.p12 -srcstoretype PKCS12 -srcstorepass 'zxxx_123' -alias tomcat_letsencrypt
    

    说明:执行 openssl 命令导出 .p12 格式证书时会要求设置密钥,执行 keytool 命令时也有3处要写密钥,最简单的方式就是所有需要密钥的地方,都使用同一个,这样也不会搞混。

    经过上面的两步操作,
    /etc/letsencrypt/live/域名名称/ 目录下就生成了一个新的证书 zyxx_letsencrypt.jks。
    接下来,修改 %tomcat%/conf/server.xml 文件,
    添加 keystoreFile 和 keystorePass 两行配置。
    其中,keystoreFile 指向 jks 证书文件,而 keystorePass 则为证书的密钥。

    6.修改后的关键配置如下:

    <Connector 
    port="8443" 
    protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true"
    maxThreads="150" 
    scheme="https" 
    secure="true"
    clientAuth="false" 
    sslProtocol="TLS"
    keystoreFile="/home/test/zyxx_letsencrypt.jks"
    keystorePass="zxxx_123"/>
    

    7.查看的到期时间

    ./certbot-auto certificates
    

    8.模拟更新证书

    ./certbot-auto renew –dry-run
    

    9.更新证书

    ./certbot-auto renew 
    

    相关文章

      网友评论

        本文标题:Let's Encrypt免费SSL证书的申请及使用(Ubunt

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