文章

用openssl生成证书

安装openssl

这步可以省略,测试的系统是红帽9.4,已经内置,ubuntu也是内置了
查看openssl版本
openssl version

openssl生成证书和私钥

先创建一个目录用于生成证书

mkdir /ssl 

进入该目录

cd /ssl 

生成CA根证书私钥

openssl genrsa -out ca.key 2048  

参数:
-genrsa 生成RSA私钥
-out ca.key 生成的私钥文件名
-2048 私钥长度

使用私钥生成CA根证书

openssl req -x509 -new -nodes -key ca.key -sha256 -days 1024 -out ca.crt

参数
-days 天数
common name填域名或者IP
171.1.png

为内网服务器生成私钥和证书请求文件

生成内网服务器的私钥

openssl genrsa -out server.key 2048

使用私钥生成证书请求文件

openssl req -new -key server.key -out server.csr

171.2.png

最后两个不填

在同目录下创建v3.ext

vi v3.ext

输入以下内容

authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment 
subjectAltName = @alt_names
 
[alt_names]
# 这里 IP 替换成 DNS 就可以签名域名了 
IP.1 = 172.28.11.105

如果不做这步,就会提示不安全

171.3.png

使用 CA 的证书为内网服务器签名证书

openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 365 -sha256 -extfile v3.ext

以jumpserver和gitlab举例添加证书

给jumpserver添加ssl

添加证书

在/opt/jumpserver/config/nginx/certs/目录下上传生成的server.crt和server.key

修改配置文件

修改/opt/jumpserver/config/config.txt

HTTPS_PORT=443
SERVER_NAME=172.28.11.105     //填域名,我这里没域名就填IP地址
SSL_CERTIFICATE=server.crt
SSL_CERTIFICATE_KEY=server.key

重启jumpserver

cd /opt/jumpserver-installer-v4.1.0 
./jmsctl.sh restart

客户端导入CA

每台要访问网站的windows都需要手动安装ca的证书,否则还是会提示不安全

171.4.png

171.5.png

171.6.png

可以看到是安全的 171.7.png

为gitlab添加ssl

上传证书

在/podman/gitlab/ssl/路径下添加server.crt和server.key

编辑podman-compose.yml

   version: '3.6'
   services:
     web:
       image: 'gitlab/gitlab-ce:latest'
       privileged: true
       container_name: gitlab
       restart: always
       hostname: '172.28.11.109'
       environment:
         TZ: 'Asia/Shanghai'
         GITLAB_OMNIBUS_CONFIG: |
           external_url 'https://172.28.11.109'
           # Add any other gitlab.rb configuration here, each on its own line
       ports:
         - '80:80'
         - '443:443'
         - '2222:22'
       volumes:
         - '/podman/gitlab/config:/etc/gitlab'
         - '/podman/gitlab/logs:/var/log/gitlab'
         - '/podman/gitlab/data:/var/opt/gitlab'
         - '/podman/gitlab/ssl:/etc/gitlab/ssl'
       shm_size: '256m'

修改gitlab.rb配置文件

nginx['enable'] = true
nginx['client_max_body_size'] = '250m'
nginx['redirect_http_to_https'] = true
nginx['redirect_http_to_https_port'] = 80
nginx['ssl_certificate'] = "/etc/gitlab/ssl/server.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/server.key"

执行podman-compose up

如果配置了镜像仓库的还需要额外配置
registry_external_url 'https://172.28.11.109:5555'
以下手动额外添加

registry_nginx['ssl_certificate'] = "/etc/gitlab/ssl/server.crt"
registry_nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/server.key"

centos/redhat导入CA证书

把ca.crt放入/etc/pki/ca-trust/source/anchors目录下
执行

/bin/update-ca-trust

删除证书的话需要把ca.crt删掉,再执行/bin/update-ca-trust

导入好ca证书后再执行podman login或者pull/push都不会再报错

ubuntu导入CA证书

将ca.crt放入/usr/local/share/ca-certificates/目录下
执行

update-ca-certificates

删除证书也是删掉该证书后执行update-ca-certificates

License:  CC BY 4.0