linux系统生成https证书,80端口和443端口共同使用

137 阅读2分钟

一、生成HTTPS证书

查看是否安装了openssl证书

openssl version -a

生成根证书的私钥

openssl genrsa -des3 -out server.key 2048

genrsa:产生rsa密钥
-out:输出文件名
2048:密钥的长度位数,默认为512

最后生成server.key文件

去除访问server.key每次输入密码的步骤

openssl rsa -in server.key -out server.key

生成服务器证书的申请文件

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

主要填写内容如下

Country Name (2 letter code) [AU]:CN  国家
State or Province Name (full name) [Some-State]:SHLocality Name (eg, city) []:SHOrganization Name (eg, company) [Internet Widgits Pty Ltd]:SZZ  组织
Organizational Unit Name (eg, section) []:SZZ   单位
Common Name (e.g. server FQDN or YOUR name) []:SZZ 个人
Email Address []:szz@13.com  邮箱

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: 密码
An optional company name []: 公司(可选)

最后生成server.csr文件

生成根证书

openssl req -new -x509 -key server.key -out ca.crt -days 3650

-new:表示生成一个新证书签署请求
-x509:专用于CA生成自签证书,如果不是自签证书则不需要此项
-key:用到的私钥文件
-out:证书的保存路径
-days:证书的有效期限,单位是天

最后生成ca.crt文件

生成服务器证书

openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey server.key -CAcreateserial -out server.crt

最后生成ca.srl,server.crt两个文件,此时一共生成了server.key,server.csr,ca.srl,ca.crt,server.crt 5个文件。

用docker方式安装nginx,监听80 和 443端口

docker run -d --restart=always --name mtgHttpsNginx_2 --privileged=true -p 80:80 -p 443:443 -v /home/docker/nginx2/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/docker/nginx2/log:/var/log/nginx -v /home/commander/html:/home/commander/html -v /home/commander/upload:/home/commander/upload -v /home/cloud-web:/home/cloud-web -v /home/store-web:/home/store-web nginx

查看nginx的容器id

docker ps

先关闭nginx

docker stop {容器id}

将刚刚生成的证书copy到容器中

docker cp server.key {容器ID}:/etc/nginx/ docker cp server.crt {容器ID}:/etc/nginx/

修改nginx配置文件

#user nobody; user root; worker_processes 1;

#error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info;

#pidlogs/nginx.pid;

events { worker_connections 1024; }

http { include mime.types; default_type application/octet-stream; client_max_body_size 1024m;

sendfile on;
keepalive_timeout 65;
gzip on;

server {
	listen 80;
            listen 443 ssl
	server_name localhost;
            ssl_certificate /etc/nginx/server.crt;
            ssl_certificate_key /etc/nginx/server.key;
	location / { 
                root /usr/share/nginx/html; 
                index index.html;
             }
	location /file {
		alias  /xxx/xxx/upload;
		index  index.html index.htm;
	}
	location /gate/ {
		proxy_pass http://IP地址:端口/;
		proxy_set_header Host $host;
		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	}

	error_page 500 502 503 504 /50x.html;
	location = /50x.html {
		root html;
	}
}

}

启动nginx

docker start {容器ID}

用 https地址访问下是否可以访问,出现以下地址即安装成功了

微信图片_20230105143424.png

以上内容参考: www.cnblogs.com/strongmore/…