zoukankan      html  css  js  c++  java
  • harbor镜像仓库-https访问配置

    1. 证书的生成

    在测试或开发环境中,您可以选择使用自签名证书,而不是来自受信任的第三方CA的证书。
    以下内容将向您展示如何创建自己的CA,并使用您的CA签署服务器证书和客户端证书。

     
    1.1 生成ca证书
    [root@docker ~]# mkdir /docker
    [root@docker ~]# cd /docker/
    [root@docker docker]# ll
    总用量 0
    [root@docker docker]# openssl genrsa -out ca.key 4096
    Generating RSA private key, 4096 bit long modulus
    ................................................................................................................++
    ......................................................................................................................................................................................................................................................................++
    e is 65537 (0x10001)
    
    ### 这里CN填写你的https设置的域名,即你harbor配置文件中hostanme填写的内容
    
    [root@docker docker]# openssl req -x509 -new -nodes -sha512 -days 3650 
     -subj "/CN=192.168.1.109" 
     -key ca.key 
     -out ca.crt
    
    [root@docker docker]# ll
    总用量 8
    -rw-r--r-- 1 root root 1797 4月  18 11:16 ca.crt
    -rw-r--r-- 1 root root 3247 4月  18 11:16 ca.key
     
    1.2 获得服务器证书

    1)创建自己的私钥:
    openssl genrsa -out server.key 4096
    2)生成证书签名请求:
    openssl req -sha512 -new 
    -subj "/CN=192.168.1.109" 
    -key server.key 
    -out server.csr

    [root@docker docker]# ll
    总用量 16
    -rw-r--r-- 1 root root 1797 4月  18 11:16 ca.crt
    -rw-r--r-- 1 root root 3247 4月  18 11:16 ca.key
    -rw-r--r-- 1 root root 1590 4月  18 11:22 server.csr
    -rw-r--r-- 1 root root 3247 4月  18 11:21 server.key
     
    1.3 生成harbor仓库主机的证书
    1.3.1 修改v3.ext文件

    无论您是使用类似yourdomain.com的 FQDN 还是IP来连接注册表主机,请运行此命令以生成符合主题备用名称(SAN)和x509 v3扩展要求的注册表主机证书:v3.ext

    cat > v3.ext <<-EOF
    authorityKeyIdentifier=keyid,issuer
    basicConstraints=CA:FALSE
    keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
    extendedKeyUsage = serverAuth 
    subjectAltName = @alt_names
    
    [alt_names]
    DNS.1=192.168.1.109
    EOF
     
    1.3.2 生成harbor仓库主机的证书
    [root@docker docker]# openssl x509 -req -sha512 -days 3650 
    -extfile v3.ext 
    -CA ca.crt -CAkey ca.key -CAcreateserial 
    -in server.csr 
    -out server.crt
    Signature ok
    subject=/CN=192.168.1.109
    Getting CA Private Key
    此时证书创建成功
    [root@docker docker]# ll
    总用量 28
    -rw-r--r-- 1 root root 1797 4月  18 11:16 ca.crt
    -rw-r--r-- 1 root root 3247 4月  18 11:16 ca.key
    -rw-r--r-- 1 root root 1834 4月  18 11:31 server.crt
    -rw-r--r-- 1 root root 1590 4月  18 11:22 server.csr
    -rw-r--r-- 1 root root 3247 4月  18 11:21 server.key
    -rw-r--r-- 1 root root  233 4月  18 11:30 v3.ext
    
     
    2 配置和安装

    1)配置服务器证书和港口密钥
    获取server.crt和server.key文件后,您可以将它们拷贝到目录/data/cert/:

    2)修改harbor配置文件
    编辑文件harbor.cfg,更新主机名和协议,并更新属性ssl_cert和ssl_cert_key:

    hostname = yourdomain.com:port
    ui_url_protocol = https
    ssl_cert = /data/cert/server.crt
    ssl_cert_key = /data/cert/server.key

    3)重启harbor

    为Harbor生成配置文件:
     ./prepare
    如果Harbor已在运行,请停止并删除现有实例。您的图像数据保留在文件系统中
      docker-compose down -v
    最后,重启harbor:
      docker-compose up -d

    4)为客户端配置harbor认证
    所有需要push或者pull镜像的机器都需要拷贝证书到docker.

    a. 创建存放域名证书的目录
    [root@Arcgisdocker ~]# mkdir -p /etc/docker/certs.d/192.168.1.109
    b. 移动证书到docker目录下
    cp ca.crt  /etc/docker/certs.d/192.168.1.109/ca.crt
    c. 测试推送拉取
    [root@DockerRegistry harbor]# docker tag busybox:latest 192.168.1.109/software/busybox:002  ##打上仓库地址标签
    [root@DockerRegistry harbor]# docker push 192.168.1.109/software/busybox:002                ##推送测试,
    The push refers to repository [192.168.1.109/software/busybox]                              ##这里已经推送过了,提示存在
    0b97b1c81a32: Layer already exists
    002: digest: sha256:f79f7a10302c402c052973e3fa42be0344ae6453245669783a9e16da3d56d5b4 size: 527
    [root@DockerRegistry harbor]# docker rmi -f af2f74c517aa                                    ##删除镜像
    Untagged: 192.168.1.109/software/busybox:002
    Untagged: 192.168.1.109/software/busybox@sha256:f79f7a10302c402c052973e3fa42be0344ae6453245669783a9e16da3d56d5b4
    Untagged: busybox:latest
    Untagged: busybox@sha256:954e1f01e80ce09d0887ff6ea10b13a812cb01932a0781d6b0cc23f743a874fd
    Deleted: sha256:af2f74c517aac1d26793a6ed05ff45b299a037e1a9eefeae5eacda133e70a825
    Deleted: sha256:0b97b1c81a3200e9eeb87f17a5d25a50791a16fa08fc41eb94ad15f26516ccea
    [root@DockerRegistry harbor]# docker pull 192.168.1.109/software/busybox:002                ###拉取镜像测试
    002: Pulling from software/busybox
    fc1a6b909f82: Pull complete
    Digest: sha256:f79f7a10302c402c052973e3fa42be0344ae6453245669783a9e16da3d56d5b4
    Status: Downloaded newer image for 192.168.1.109/software/busybox:002

    为Harbor设置HTTPS后,您可以通过以下步骤进行验证:
    打开浏览器并输入地址:https://yourdomain.com。它应该显示Harbor的用户界面。
    请注意,即使我们通过自签名CA签署证书并将CA部署到上述位置,某些浏览器仍可能出于安全原因显示有关证书颁发机构(CA)未知的警告。这是因为自签名CA本质上不是受信任的第三方CA. 您可以自己将CA导入浏览器以解决警告

     

    实例配置:

    将生成的ca.crt文件放置到 centos 7 客户端docker根目录下 , 重启docker 可登录镜像仓库 

    [root@dev-gray cargo.caicloudprivatetest.com]# pwd
    /etc/docker/certs.d/cargo.caicloudprivatetest.com
    [root@dev-gray cargo.caicloudprivatetest.com]# ls
    ca.crt
    [root@dev-gray cargo.caicloudprivatetest.com]# docker login cargo.cai******tetest.com -u admin -p Pw****56
    WARNING! Using --password via the CLI is insecure. Use --password-stdin.
    WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
    Configure a credential helper to remove this warning. See
    https://docs.docker.com/engine/reference/commandline/login/#credentials-store
    
    Login Succeeded
    

     

  • 相关阅读:
    打印九九乘法三角形的各种思路
    7-14 倒数第N个字符串
    7-13 求阶乘序列前N项和
    7-12统计学生成绩
    Discrete Mathematics and Its Applications | 1 CHAPTER The Foundations: Logic and Proofs | 1.3 Propositional Equivalences
    Discrete Mathematics and Its Applications | 1 CHAPTER The Foundations: Logic and Proofs | 1.2 Applications of Propositional Logic
    Discrete Mathematics and Its Applications | 1 CHAPTER The Foundations: Logic and Proofs | 1.1 Propositional Logic
    [Mac Terminal] ___切换到其他路径和目录
    [Mac Terminal] ___MAC终端清屏快捷键
    部署flask到linux服务器
  • 原文地址:https://www.cnblogs.com/weifeng1463/p/11106462.html
Copyright © 2011-2022 走看看