共计 2345 个字符,预计需要花费 6 分钟才能阅读完成。
一、证书制作
1、生成秘钥
openssl genrsa -des3 -out server.pass.key 2048 -passin pass:1234
如果秘钥有密码,重启 web 服务器会要求验证密码,所以直接去掉秘钥中的密码。
openssl rsa -in server.pass.key -out server.key
2、生成证书请求文件
- 交互式:
openssl req -new -key server.key -out server.csr
终端会提示输入通用名、组织名称等等。
- 直接生成
openssl req -new -key server.key -out server.csr -subj /C=CH/ST=GuangZhou/L=GuangDong/O=Aman/OU=Aman/CN=www.huangzhen.com
CN=commonName(通用名)
OU=organizationUnit(组织部门名)
O=organizationName(组织名)
L=localityName(地址)
ST=stateName(州名-城市名)
C=country(国家)
查看证书请求文件
openssl req -text -noout -in server.csr
3、修改 openssl.cnf
- 查看 openssl.cnf 文件存放位置
openssl version -d
- 末尾添加使用者可选名称
cat >> /etc/pki/tls/openssl.cnf <<EOF
[ alt_names ]
DNS.1 = abc.example.com
DNS.2 = *.example.com
DNS.3 = www.huangzhen.com
IP.1 = 172.21.9.203
IP.2 = 172.21.9.204
EOF
- v3_req 中添加 subjectAltName = @alt_names
sed -i '/\[ v3_req \]/asubjectAltName = @alt_names' /etc/pki/tls/openssl.cnf
需要添加subjectAltName = @alt_names
才会把上面的配置添加到证书。
4、生成 v3 证书
openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt -extfile /etc/pki/tls/openssl.cnf -extensions v3_req
查看证书内容
openssl x509 -text -noout -in server.crt
如果证书文件是der格式,则需要添加-inform der参数来指定其文件编码。
openssl x509 -inform der -text -noout -in server.csr
其他
- pem和der编码格式的相互转换
# pem转der
openssl x509 -outform der -in server.pem -out server.der
# der转pem
openssl x509 -inform der -in server.der -out server.crt
nginx 使用 ssl 证书
1、创建需要挂载的目录
mkdir -p /home/docker/nginx && \
cd /home/docker/nginx && \
mkdir conf.d && \
mkdir html && \
mkdir logs
2、复制容器内必要的文件
docker run -d --name nginx -p 88:80 nginx && \
docker cp nginx:/etc/nginx/nginx.conf ./ && \
docker cp nginx:/etc/nginx/conf.d/default.conf ./conf.d/ && \
docker rm -f nginx
将 nginx 的配置文件复制出来,不然启动的时候挂载会导致 nginx 配置文件丢失。
3、启动 nginx
docker run -d \
--name nginx \
--net=host \
-v /home/docker/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /home/docker/nginx/conf.d:/etc/nginx/conf.d \
-v /home/docker/nginx/logs:/var/log/nginx \
-v /home/docker/nginx/html:/usr/share/nginx/html \
-v /etc/localtime:/etc/localtime:ro \
--restart always \
--privileged=true nginx
因为 /home/docker/nginx/html
目录是空的,所以需要创建 index.html。
cat > /home/docker/nginx/html/index.html <<EOF
My test page
EOF
4、添加ssl证书
将 ssl 证书放在 /home/docker/nginx/conf.d
目录下。
cat >> /home/docker/nginx/conf.d/default.conf <<EOF
server {
listen 443 ssl;
listen [::]:443 ssl;
ssl_certificate /etc/nginx/conf.d/server.crt;
ssl_certificate_key /etc/nginx/conf.d/server.key;
server_name www.huangzhen.com;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
EOF
重启 nginx
docker restart nginx
5、测试结果
将证书下载,双击安装,导入为受信任的根证书。
提醒:本文发布于752天前,文中所关联的信息可能已发生改变,请知悉!
AD:【腾讯云服务器大降价】2核4G 222元/3年 1核2G 38元/年
正文完