Day 41 NGINX详解-制作CA证书(扩展)

时间:2024-06-02 22:02:42

证书制作

RHEL5、RHEL6 、RHEL7中在/etc/pki/tls/certs 目录有个脚本可以帮助我们简化证书生成的过程
#cd /etc/pki/tls/certs
#make server.key //生成私钥
#openssl rsa -in server.key -out server.key //去除密码以便使用时不询问密码
注:rsa是一种采用非对称密钥的加密算法

​ #make server.csr //生成证书颁发机构,用于颂发公钥
​ #openssl x509 -in server.csr -req -signkey server.key -days 365 -out server.crt //颁发公钥
​ 注:x509是一种非常通用的证书格式

Nginx配置证书使用

由于我们并不是去 CA 证书中心申请的公钥,所以在使用的时候,客户端浏览器会跳出未受信任的警告。如果你 money 够多,请去 CA 申请。
server {
listen 443;

​ #listen 443 ssl; 1.26版本以上使用此配置 并且取消下面ssl的开关行配置

​ server_name web.wing.com;

​ ssl on; # 1.26 版本需要删除本行配置
ssl_certificate /etc/pki/tls/certs/server.crt;
​ ssl_certificate_key /etc/pki/tls/certs/server.key; #指定证书所存放的路径
​ ssl_session_timeout 5m;

​ ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; # 密码指定为OpenSSL支持的格式,Nginx模板配置不可用,注意修改此行
​ ssl_prefer_server_ciphers on;

​ location / {
​ root /wing/html;
​ index index.html index.htm;
​ }
​ }

1.生成一个CA中心
2.有自己的网站(web服务器)
3.生成证书请求
4.把证书请求发送给CA中心
5.CA中心给证书请求签名
6.把签名成功证书下发给WEB服务器

7.在web上配置证书生效(创建一个https的虚拟主机,指定指定私钥和证书的位置)
8.浏览器访问web服务器443端口,下载证书到客户端浏览器**
9.浏览器去CA中心验证证书真假
10.客户端生成自己的对称加密密钥,连同网页内容的请求一起发给服务器
11.客户端会使用WEB服务器的公钥对对称加密密钥进程加密
12.服务器对客户端发来的加密对称密钥解密并使用解密出来的对称密钥对将要传输的数据加密,然后传给客户端
`

在上面的示例中,如果请求匹配 /example/old/...,第一条 rewrite 规则将被执行,并使用 break 选项终止当前 location 块中的 rewrite 处理,不会继续执行第二条 rewrite 规则。

  1. last 选项:
    • 当使用 rewrite ... last; 时,它会终止当前 rewrite 指令的处理,但会重新启动请求的处理,同时将请求的URI与新的URI传递给新的 location。
    • 这可以用于执行重定向操作,将请求传递到新的 location 块,而不终止整个请求处理。
    • 如果有其他 rewrite 规则定义在同一个 location 块内,它们也将会被重新执行。

示例:

location /example/ {
    rewrite ^/example/old(/.*)$ /example/new$1 last;
    rewrite ^/example/other(/.*)$ /example/something$1;  # 这个也会被执行
}

在上面的示例中,如果请求匹配 /example/old/...,第一条 rewrite 规则将被执行,但使用 last 选项,它会重新启动请求处理,并传递给新的 location 或匹配的 location 块。然后,第二条 rewrite 规则也会被执行。

综上所述,break 用于终止当前 location 块内的 rewrite 处理,而 last 用于重新启动请求的处理并将请求传递给新的 location。这两个选项在不同情况下非常有用,可以根据需要选择使用哪个。

Last和Break练习示例

示例1-无break和last
请求:访问/1.html
结果:最终会匹配到b.html
执行顺序:连续执行两次rewrite后,匹配到location /3.html,最终匹配到b.html

server{
listen 80;
server_name test.com;
root /tmp;

location / {
rewrite /1.html /2.html;
rewrite /2.html /3.html;
}
location /2.html
{
rewrite /2.html /a.html;
}
location /3.html
{
rewrite /3.html /b.html;
}
}

示例2-break在location外
请求:访问/1.html
结果:最终返回403
执行顺序:因为rewrite后有break,所以不再匹配后面的rewrite了,但会继续匹配后面的location。

server{
listen 80;
server_name test.com;
root /tmp;

rewrite /1.html /2.html break;
rewrite /2.html /3.html;
location /2.html {
return 403;
}
}

示例3-break在location中
请求:访问/1.html
结果:最终得到2.html
执行顺序:在location块中匹配到rewrite /1.html /2.html break;后不再执行任何语句,包括当前location块中的语句。

server{
listen 80;
server_name test.com;
root /tmp/123.com;

location / {
rewrite /1.html /2.html break;
rewrite /2.html /3.html;
}
location /2.html
{
rewrite /2.html /a.html;
}
location /3.html
{
rewrite /3.html /b.html;
}
}

示例4-last
请求:访问/1.html
结果:最终得到a.html
执行顺序:遇到了last的后,会再次进行匹配,最终得到a.html。

server{
listen 80;
server_name test.com;
root /tmp/123.com;

location / {
rewrite /1.html /2.html last;
rewrite /2.html /3.html;
}
location /2.html
{
rewrite /2.html /a.html;
}
location /3.html
{
rewrite /3.html /b.html;
}
}

制作CA证书(扩展)

证书制作

RHEL5、RHEL6 、RHEL7中在/etc/pki/tls/certs 目录有个脚本可以帮助我们简化证书生成的过程
#cd /etc/pki/tls/certs
#make server.key //生成私钥
#openssl rsa -in server.key -out server.key //去除密码以便使用时不询问密码
注:rsa是一种采用非对称密钥的加密算法

​ #make server.csr //生成证书颁发机构,用于颂发公钥
​ #openssl x509 -in server.csr -req -signkey server.key -days 365 -out server.crt //颁发公钥
​ 注:x509是一种非常通用的证书格式

Nginx配置证书使用

由于我们并不是去 CA 证书中心申请的公钥,所以在使用的时候,客户端浏览器会跳出未受信任的警告。如果你 money 够多,请去 CA 申请。
server {
listen 443;

​ #listen 443 ssl; 1.26版本以上使用此配置 并且取消下面ssl的开关行配置

​ server_name web.wing.com;

​ ssl on; # 1.26 版本需要删除本行配置
ssl_certificate /etc/pki/tls/certs/server.crt;
​ ssl_certificate_key /etc/pki/tls/certs/server.key; #指定证书所存放的路径
​ ssl_session_timeout 5m;

​ ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; # 密码指定为OpenSSL支持的格式,Nginx模板配置不可用,注意修改此行
​ ssl_prefer_server_ciphers on;

​ location / {
​ root /wing/html;
​ index index.html index.htm;
​ }
​ }

1.生成一个CA中心
2.有自己的网站(web服务器)
3.生成证书请求
4.把证书请求发送给CA中心
5.CA中心给证书请求签名
6.把签名成功证书下发给WEB服务器

7.在web上配置证书生效(创建一个https的虚拟主机,指定指定私钥和证书的位置)
8.浏览器访问web服务器443端口,下载证书到客户端浏览器**
9.浏览器去CA中心验证证书真假
10.客户端生成自己的对称加密密钥,连同网页内容的请求一起发给服务器
11.客户端会使用WEB服务器的公钥对对称加密密钥进程加密
12.服务器对客户端发来的加密对称密钥解密并使用解密出来的对称密钥对将要传输的数据加密,然后传给客户端