Let's Encrypt 泛域名证书申请及openshift下ssl配置

软硬件环境

  • 操作系统centos 7.4
  • 拥有独立域名管理权和cloudfare账号,在Cloudflare的DNS中为您的域设置的DNS记录

安装certbot

  1. 默认情况下,CentOS的软件包管理器不提供certbot软件包。 您需要启用EPEL存储库以安装Certbot及其插件。
    要添加CentOS 7 EPEL存储库,请运行以下命令:
    sudo yum install -y epel-release
  1. 安装完成后,您可以安装certbot :
    sudo yum install -y certbot
  1. 为Certbot安装CloudFlare插件:
    sudo yum install -y python2-cloudflare python2-certbot-dns-cloudflare

获取CloudFlare API

为了使Certbot能够自动续订通配符证书,您需要为其提供CloudFlare登录和API密钥。
登录您的Cloudflare帐户并导航到“ 个人资料”页面 。
单击Global API Key行中的View按钮。

配置Certbot

  1. 运行不带任何参数的certbot命令来创建初始配置文件:
    sudo certbot
  1. 在/etc/letsencrypt目录中创建一个配置文件,其中包含您的CloudFlare电子邮件和API密钥:
    sudo vi /etc/letsencrypt/cloudflareapi.cfg
  1. 将以下内容添加到/etc/letsencrypt/cloudflareapi.cfg,使用Cloudflare登录和API密钥替换占位符:
    dns_cloudflare_email = your_cloudflare_login
    dns_cloudflare_api_key = your_cloudflare_api_key
  1. 文件授权
    sudo chmod 600 /etc/letsencrypt/cloudflareapi.cfg

证书生成

可以指定多个域名,泛域名通过*代替,由于openshift路由的子域名我们配置成了apps,这里把子域名也加上,证书输出目录为 /etc/letsencrypt/live/your_domain

    sudo certbot certonly --cert-name youdomain \
    --dns-cloudflare --dns-cloudflare-credentials /etc/letsencrypt/cloudflareapi.cfg \
    --server https://acme-v02.api.letsencrypt.org/directory \
    -d youdomain.com \
    -d *.youdomain.com \
    -d *.apps.youdomain.com 

重新配置openshift router证书

  1. 备份原证书
   oc get secret router-certs -n default -o yaml > old-router-certs-secret.yaml
  1. 根据cert.pem、chain.pem、privkey.pem生成router证书文件
    cat /etc/letsencrypt/live/youdomain/cert.pem \
    /etc/letsencrypt/live/youdomain/chain.pem \
    /etc/letsencrypt/live/youdomain/privkey.pem \
    > /etc/letsencrypt/live/youdomain/router.pem
  1. 替换原有证书
    oc create secret tls router-certs --cert=/etc/letsencrypt/live/youdomain/router.pem \
   --key=/etc/letsencrypt/live/youdomain/privkey.pem -o json --dry-run | \
   oc replace -f -
  1. 移除router service annotate
   oc annotate service router \
   service.alpha.openshift.io/serving-cert-secret-name- \
   service.alpha.openshift.io/serving-cert-signed-by-
  1. 重新添加router service annotate
   oc annotate service router \
   service.alpha.openshift.io/serving-cert-secret-name=router-certs
  1. 重新部署路由器
   oc rollout latest dc/router

重新配置openshift web-console证书

如果是高可用则每台master都需要执行以下操作

  1. 拷贝证书到master目录
cp /etc/letsencrypt/live/yourdomain/fullchain.pem  /etc/origin/master/named_certificates/yourdomain-fullchain.crt
cp /etc/letsencrypt/live/yourdomain/privkey.pem /etc/origin/master/named_certificates/yourdomain-privkey.key
  1. 修改/etc/origin/master/master-config.yaml文件(namedCertificates部分)
servingInfo:
 bindAddress: 0.0.0.0:443
 bindNetwork: tcp4
 certFile: master.server.crt
 clientCA: ca.crt
 keyFile: master.server.key
 maxRequestsInFlight: 500
 requestTimeoutSeconds: 3600
 namedCertificates:
 - certFile: /etc/origin/master/named_certificates/yourdomain-fullchain.crt
   keyFile: /etc/origin/master/named_certificates/yourdomain-privkey.key
   names:
     - "yourdomain"
  1. 重启master api
master-restart api api
  1. 检查master api日志 查看是否正常启动
master-logs api api

遗留问题

  • Let’s Encrypt 生成的证书只有90天失效,编写自动生成证书并替换证书的脚本
  • registry使用了内部域名 无法使用Let’s Encrypt的证书

参考

证书生成:https://www.howtoing.com/how-to-retrieve-let-s-encrypt-ssl-wildcard-certificates-using-cloudflare-validation-on-centos-7
官方文档:https://docs.openshift.com/container-platform/3.10/install_config/redeploying_certificates.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值