用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
为内网服务器生成私钥和证书请求文件
生成内网服务器的私钥
openssl genrsa -out server.key 2048
使用私钥生成证书请求文件
openssl req -new -key server.key -out server.csr
最后两个不填
在同目录下创建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
如果不做这步,就会提示不安全
使用 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的证书,否则还是会提示不安全
可以看到是安全的
为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