自签证书测试

安装nginx,这里我是yum直接下载的

yum -y install nginx

 检查nginx的SSL模块

 准备私钥和证书

创建私钥

[root@ localhost ~]# cd /etc/nginx/
[root@ localhost nginx]# mkdir -p ssl
[root@ localhost nginx]# cd ssl/
[root@ localhost ssl]# openssl genrsa -des3 -out server.key 1024
Generating RSA private key, 1024 bit long modulus
.............................................................................++++++
.........++++++
e is 65537 (0x10001)
Enter pass phrase for server.key: 123456
Verifying - Enter pass phrase for server.key: 123456
[root@ localhost ssl]# ls
server.key
[root@ localhost ssl]# ll
total 4
-rw-r--r-- 1 root root 963 2020-02-26 20:32 server.key

 签发证书

[root@ localhost ssl]# openssl req -new -key server.key -out server.csr
Enter pass phrase for server.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:BJ
Locality Name (eg, city) [Default City]:BJ
Organization Name (eg, company) [Default Company Ltd]:SDU
Organizational Unit Name (eg, section) []:BJ
Common Name (eg, your name or your server's hostname) []:TYK
Email Address []:931130942@qq.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:  回车
An optional company name []: 回车

 删除私钥口令

[root@ localhost ssl]# 
[root@ localhost ssl]# cd /etc/nginx/ssl/
[root@ localhost ssl]# cp server.key server.key.ori
[root@ localhost ssl]# openssl rsa -in server.key.ori -out server.key
Enter pass phrase for server.key.ori: 123456
writing RSA key

 生成使用签名请求证书和私钥生成自签证书

[root@ localhost ssl]# cd /etc/nginx/ssl/
[root@ localhost ssl]# cp server.key server.key.ori
[root@ localhost ssl]# openssl rsa -in server.key.ori -out server.key
Enter pass phrase for server.key.ori:
writing RSA key
[root@ localhost ssl]# openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
Signature ok
subject=/C=CN/ST=BJ/L=BJ/O=SDU/OU=BJ/CN=TYK/emailAddress=931130942@qq.com
Getting Private key

 开启nginxSSL

创建虚拟主机

先去/etc/nginx/nginx.conf直接复制,复制完以后注释掉

[root@ localhost ~]# cd /etc/nginx/conf.d/
[root@ localhost conf.d]# mkdir -p /etc/nginx/html
[root@ localhost conf.d]# vim hack.conf
[root@ localhost conf.d]# cat hack.conf 
 server {
        listen       443 ssl;
        server_name  www.hack.com;
	
	ssl_certificate /etc/nginx/ssl/server.crt;
	ssl_certificate_key /etc/nginx/ssl/server.key;

        include /etc/nginx/default.d/*.conf;
	#定义站点目录
        location / {
        	root	/etc/nginx/html;
	}

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }
#检查语法有没有问题然后重启
[root@ localhost conf.d]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@ localhost conf.d]# nginx -s reload

 绑定windows的hosts,在导入测试页面,然后谷歌浏览器访问https://www.hack.com/back.html

[root@ localhost conf.d]# cd /etc/nginx/html/
[root@ localhost html]# rz -E
rz waiting to receive.
[root@ localhost html]# ls
hack.html

 虽然会提示不安全但还是可以正常访问

 这时候就无法用http://www.hack.com/hack.html去访问了(注意浏览器的缓存)这时候就需要将80端口重定向到443端口。

rewrite重定向

以上配置有个不好的地方,如果用户忘了使用https或者443端口,那么网站将无法访问,因此需要将80端口的访问转到443端口并使用ssl加密访问。只需要增加一个server端,使用301永久重定向。

更改完以后检测语法,然后重新启动nginx。

[root@ localhost conf.d]# cat hack.conf 
server {
	listen 80;
	server_name www.hack.com;
	rewrite ^(.*) https://www.$server_name$1 permanent;
} 

server {
        listen       443 ssl;
        server_name  www.hack.com;
	
	ssl_certificate /etc/nginx/ssl/server.crt;
	ssl_certificate_key /etc/nginx/ssl/server.key;

        include /etc/nginx/default.d/*.conf;
	#定义站点目录
        location / {
        	root	/etc/nginx/html;
	}

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }
[root@ localhost conf.d]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@ localhost conf.d]# nginx -s reload

 这时再用浏览器去访问http://www.hack.com/hack.html就可以正常访问了,nginx会将请求跳到https://www.hack.com/hack.html,可查看一下nginx的日志显示。

 

原文地址:https://www.cnblogs.com/tyk3201/p/12369145.html