zoukankan      html  css  js  c++  java
  • Docker registry自签名证书

    权威Registry

    获取安全证书有两个办法:互联网认证的CA处获取。自建CA自己给自己签名。

    • 1、从认证CA处获取签名证书,大多数是需要付出一定费用的,近些年也有认证CA提供免费证书,例如Let’s Encrypt(被大多数浏览器信任)。下文使用Let’s Encrypt的例子您将清楚地看到这个步骤。
    • 2、自建CA并签名证书的方式所带来的问题是CA本身的维护以及客户端方面的维护。要保证自建CA的安全需要有比较扎实的基础安全知识,维护它的 运转需要有对签名流程进行干预的控制能力,或自动、或手工。客户端方面,同样需要对所有客户端按照其CA安装机制来进行额外安装。若将自建CA维护到与认 证CA同等的安全性和便利性,所付出的代价将超过付费证书。因此这种方式主要用于试验性环境。

    LetsEncrypt证书

    1、准备一台服务器(有公网IP),已做好域名解析。这里以Ubuntu 14.04 TLS为例。
    2、确保该服务器80,443端口可以从互联网访问到且不被占用(关掉占用端口的服务器)。

    因为LetsEncrypt申请证书是需要联网签名的,并且要用到80端口。

    在成功获取证书后,服务器IP和端口就可另作他用。因此,可以在某台有公网IP的主机服务器上获取证书,再将证书转移到其它服务器进行使用。若采用 这样的方式,Docker客户端需要将私网IP和dockie.mydomain.com对应写入hosts文件或将该解析写到私网DNS服务器里。但证 书到期renew的时候还需要同样的公网域名(公网IP可以不同)。

    3、在服务器上获取签名证书

    SH$ git clone https://github.com/letsencrypt/letsencrypt.git
    $ cd letsencrypt
    $ sudo ./certbot-auto certonly --standalone --email admin@example.com -d example.com -d www.example.com -d other.example.net
    

    这里直接根据官方提供的方法从GITHUB获取安装包和目录安装,上面是一个标准的格式,根据我们的邮箱、以及需要添加的域名设置,如果多域名直接 在后面添加-d就可以,比如继续添加其他域名 -d www.laojiang.me -d laojiang.me以此类推。

    IMPORTANT NOTES:
    - Congratulations! Your certificate and chain have been saved at
      /etc/letsencrypt/live/laojiang.me/fullchain.pem. Your cert will
      expire on 2016-07-13. To obtain a new version of the certificate in
      the future, simply run Let's Encrypt again.
    - If you like Let's Encrypt, please consider supporting our work by:
    Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
    Donating to EFF:                    https://eff.org/donate-le
    

    看到这样的文字和提示就代表获取Let’s Encrypt证书成功,时间是90天,我们需要在到期前手手动续约就可以继续90天。然后我们在”/etc/letsencrypt/live/域名 /“目录中看到4个文件(cert.pem chain.pem fullchain.pem privkey.pem)。

    4、更新证书
    使用下面这条命令,更新证书,它将更新到期时间不到30天的证书,而且它会根据你当初生成证书的设置更新你的证书。

    $ ./certbot-auto renew --dry-run
    

    5、通过钩子更新证书

    $ ./certbot-auto renew --standalone --pre-hook "service nginx stop" --post-hook "service nginx start"
    

    这里使用了一个钩子,--pre-hook>更新前执行命令命令,--post-hook更新之后执行命令。

    自签名证书

    执行以下命令,它会在文件夹下生成domain.key和domain.crt

    SHmkdir -p certs && openssl req 
     -newkey rsa:4096 
     -nodes -sha256 
     -keyout certs/domain.key 
     -x509 -days 365 
     -out certs/domain.crt
    

    相关参数说明:

    SHCountry Name (2 letter code) [AU]:CN                               #国家代码,中国CN
    State or Province Name (full name) [Some-State]:Sichuan            #省份全拼
    Locality Name (eg, city) []:Chengdu                                #城市
    Organization Name (eg, company) [Internet Widgits Pty Ltd]:Person  #组织名,公司名
    Organizational Unit Name (eg, section) []:Chen                     #部门名称
    Common Name (e.g. server FQDN or YOUR name) []:registry.domain.com #这里必须填写Docker Registry使用的域名
    Email Address []:ccc@domain.com                                    #电子邮件
    

    自签名证书,使用Docker Registry的Docker机需要将domain.crt拷贝到 /etc/docker/certs.d/[docker_registry_domain]/ca.crt,然后重启docker,将domain.crt内容放入系统的CA bundle文件当中,使操作系统信任我们的自签名证书。

    CentOS 6 / 7中bundle文件的位置在/etc/pki/tls/certs/ca-bundle.crt:

    cat domain.crt >> /etc/pki/tls/certs/ca-bundle.crt
    

    Ubuntu/Debian Bundle文件地址/etc/ssl/certs/ca-certificates.crt

    cat domain.crt >> /etc/ssl/certs/ca-certificates.crt
    

    Mac

    1、点击钥匙串访问
    2、点击系统
    3、点击证书
    4、将domain.crt拖到目录下
    5、输入密码,添加成功
    6、双击该证书,点击信任,选择
    7、退出
    
  • 相关阅读:
    使用matplotlib绘制常用图表(3)其他图表绘制
    python简单爬虫
    使用matplotlib绘制常用图表(2)常用图标设置
    一个GISer的使命
    SQL2008″Unable to read the list of previously registered servers on this system”
    Eclipse语言包安装
    eclipse查看JDK源码
    Eclipse中设置javadoc中文帮助文档
    GDI+处理图像时出现内存不足的问题
    利用github搭建私人maven仓库
  • 原文地址:https://www.cnblogs.com/justart/p/8072530.html
Copyright © 2011-2022 走看看