微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

HarborRegistry——centos中设置Harbor Registry的https

Harbor不附带任何的证书,认使用http来对registry的请求做服务。所以,Harbor配置起来十分简单,但是呢,在生产环境中,还是推荐使用安全的方式。Harbor使用了一个Nginx做逆向代理,可以对其配置以启用https。

获取证书 ##

假定运行有Harbor的服务器对应的域名为reg.yourdomain.com. 首先应该从CA获取证书,即一个.crt文件一个.key文件

在测试和开放环境中可以使用自签名的证书取代从CA那里获取证书。下面命令产生自己的证书:

  1. centos下,要更改/etc/pki/tls/openssl.cnf 的CA_default部分,如下:

    [ CA_default ]
    
    dir = ./demoCA 

  2. 创建自己的CA证书:

    openssl req \
       -newkey rsa:4096 -nodes -sha256 -keyout ca.key \
       -x509 -days 365 -out ca.crt

  3. 生成证书签名请求:
    如果使用域名,比如说reg.yourdomain.com来连接registry主机,必须将reg.yourdomain.com作为CN(Common Name)。如果使用IP地址连接registry主机,CN可以是任何名字,比如你的姓名或者其它。

    openssl req \
       -newkey rsa:4096 -nodes -sha256 -keyout yourdomain.com.key \
       -out yourdomain.com.csr

  4. 生成注册主机的证书:
    在Ubuntu上,openssl的配置文件放在/etc/ssl/openssl.cnf 文件里。详细信息请参考openssl官方文档。openssl的认CA目录称为demoCA。接下来创建必要的目录和文件

    mkdir demoCA
     cd demoCA
     touch index.txt
     echo '01' > serial
     cd ..

    如果你使用域名reg.youdomain.com 来连接registry主机,那么,运行这个命令来生成registry主机的证书:

    openssl ca -in yourdomain.com.csr -out yourdomain.com.crt -cert ca.crt -keyfile ca.key -outdir .

    如果你使用IP地址来连接registry主机,那么,需要运行一下的命令了:

    echo subjectAltName = IP:your registry host IP > extfile.cnf
    
    openssl ca -in yourdomain.com.csr -out yourdomain.com.crt -cert ca.crt -keyfile ca.key -extfile extfile.cnf -outdir .

配置harbor.cfg

将验证客户端证书的开关关掉

verify_remote_cert = off

将在上文中的yourdomain.crtyourdomain.com.key文件绝对路径填写到ssl_certssl_cert_key 部分,如下:

#The path of cert and key files for Nginx,they are applied only the protocol is set to https
ssl_cert = /root/harbor/ca/yourdomain.com.crt
ssl_cert_key = /root/harbor/ca/yourdomain.com.key

安装Harbor

编辑文件make/harbor.cfg ,更新主机名和协议:

#set hostname
  hostname = reg.yourdomain.com
  #set ui_url_protocol
  ui_url_protocol = https

直接运行make/install.sh包括了停止Harbor实例:

cd make
./install.sh

客户端设置(https验证)

linux下,创建目录/etc/docker/certs.d/yourdomain.com:port(或者registry主机的IP地址) ,将registry申请的证书 ca.crt 放到这个目录下面。
windows下,直接双击导入就行。

设定了Harbor的HTTPS后,可以通过以下的步骤来验证:

  1. 打开浏览器,输入地址:https://reg.yourdomain.com . 应该能够呈现Harbor的用户界面了。

  2. 使用Docker daemon的机器上,确定选项-insecure-registry不会出现,还有必须拷贝上述的ca.crt到/etc/docker/certs.d/yourdomain.com(或者是registry主机的IP地址) 目录下,如果该目录不存在,需要创建。如果Nginx的端口不是443,是别的端口,目录就应该更改成:/etc/docker/certs.d/yourdomain.com:port(或者registry主机的IP地址) 。接着运行任意docker命令来验证https的配置。比如,

    docker login reg.yourdomain.com

    如果不是443端口,登录的时候,需要添加端口号,如下,

    docker login reg.yourdomain.com:port

ssl简介

  1. 客户机发送自己的ssl版本,加密算法配置,
  2. server发送自己的ssl版本,加密算法配置,并且用私钥加密信息,同时候,发送自己的证书
  3. client通过server发过来的证书进行server的身份认证,如果认证通过,就可以得到server的公钥,再对数据进行解密。
  4. clinent使用到目前为止所产生的随机数据产生握手中的premastersecret,并用server的公钥加密,送回给server,如果server要求验证client身份,则同样需要签名发给server。
  5. server验证完client身分后,用自己私钥解密得到premastersecret,然后,双方利用这个premastersecret来共同协商,得到mastersecret。
  6. 双方用master一起产生真正的sessionkey,这就是剩下过程中的对称加密的key了。这个key还可以用来验证数据完整性。双方再交换结束信息,握手结束。
  7. 接下来双方就可以用协商好的算法和key来使用对称加密算法继续下面的过程了。

原文地址:https://www.jb51.cc/centos/380007.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。