协议修改 HTTP改为HTTPS
1.存在证书和私钥
1.把证书和私钥放到指定位置
直接把证书和私钥放到nginx容器映射物理目录的conf/conf.d中(这个目录自定义,想放在哪里都可以,只要可以映射到容器内就可以),例如:
#nginx docker-compose
nginx:
image: nginx:latest
restart: always
container_name: nginx
ports:
- 8888:80
volumes:
- "/home/webServer/nginx/conf/nginx.conf:/etc/nginx/nginx.conf"
- "/home/webServer/nginx/conf/conf.d:/etc/nginx/conf.d"
- "/home/webServer/nginx/log:/var/log/nginx"
- "/home/webServer/nginx/html:/usr/share/nginx/html"
networks:
- tinyscan
# 1. 将证书和私钥放到/home/webServer/nginx/conf/conf.d目录下
2.修改nginx配置
将监听端口由80改为443,增加ssl
, ssl_certificate
, ssl_certificate_key
3.重启
docker restart nginx
2.自生成证书与私钥
1.安装OpenSSL
- 安装依赖环境
# 检测是否安装gcc,如果有则不需要安装
gcc -v
# 安装
yum -y install gcc
# 检查是否已安装zlib库,如果有则不需要安装
whereis zlib
# 安装
yum -y install zlib
# 下载OpenSSL包
wget https://www.openssl.org/source/openssl-fips-2.0.16.tar.gz
# 解压
tar -xzf openssl-fips-2.0.16.tar.gz
# 进入目录
cd openssl-fips-2.0.16/
#设置安装路径
./config --prefix=/usr/local/openssl
# 编译安装
make && make install
# 查看版本
openssl version
2.生成证书
参考:https://blog.csdn.net/weixin_44110998/article/details/104021002
- 创建一个目录
用于保存证书和私钥。(也可以放到其他目录下)
mkdir /home/yyx/https_key
- 进入目录
cd /home/yyx/https_key
- 创建服务器私钥
注:长度1024位, des3加密算法的. (之后输入一个口令(两遍),需要记住)
openssl genrsa -des3 -out server.key 1024
我虚拟机环境是ubuntu 20.04,需将1024改为2048否则nginx重启会报错, 报错如下
2022/11/08 08:50:55 [warn] 1#1: the "ssl" directive is deprecated, use the "listen ... ssl" directive instead in /etc/nginx/nginx.conf:44
2022/11/08 08:50:55 [emerg] 1#1: SSL_CTX_use_certificate("/etc/nginx/conf.d/server.crt") failed (SSL:error:140AB18F:SSL routines:SSL_CTX_use_certifi cate:ee key too small)
openssl genrsa -des3 -out server.key 2048
- 创建签名请求的证书CSR
首先会输入密码(上边设置的),会要求你输入国别,比如CN,省份,城市,公司等等一系列信息,自己玩的可以随意输入
最后输入的A challenge password []:和An optional company name []:可以直接回车跳过
openssl req -new -key server.key -out server.csr
- 在加载SSL支持的Nginx并使用上述私钥时除去必须的口令
cp server.key server.key.org
openssl rsa -in server.key.org -out server.key #需要输入密码
- 标记证书使用上述私钥和CSR
注:365是过期天数
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
- 查看证书和私钥是否创建成功
[root@localhost key_dir]# ls
server.crt server.csr server.key server.key.org
[root@localhost key_dir]#