nginx+ca+https设置【草稿试验版】

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cdnight/article/details/84992407

前言

请参考:

【HTTPS】自签CA证书 && nginx配置https服务

OpenSSL生成证书对

抄录如下:

OpenSSL具体安装及使用此文中不再累赘,请参考网上相关文档。

首先生成X509格式的CA自签名证书 
$openssl req -new -x509 -keyout myca.key -out myca.crt –days  90
生成SSL客户端的私钥(key文件)及csr文件 
$openssl genrsa -des3 -out SSL.key 1024 –days 90
$openssl req -new -key SSL.key -out SSL.csr –days 90
用生成的CA的证书为刚才生成的SSL.csr文件签名 
$openssl ca -in SSL.csr -out SSL.crt -cert myca.crt -keyfile myca.key –days 90
生成p12格式证书 
$openssl pkcs12 -export -inkey SSL.key -in SSL.crt -out SSL.pfx
完成以上操作后在当前目录下会有六个文件,分别是myca.crt,myca.key,SSL.crt,SSL.csr,SSL.key,SSL.pfx。其中CA的公钥myca.crt 和用户的私钥 SSL.pfx是我们需要的文件。 

如果在这步出现错误信息:
[weigw@TEST bin]$ openssl ca -in client.csr -out client.crt -cert ca.crt -keyfile ca.key 
Using configuration from /usr/share/ssl/openssl.cnf I am unable to access the ./demoCA/newcerts directory ./demoCA/newcerts: No such file or directory 
[weigw@TEST bin]$ 
自己手动创建一个CA目录结构:
[weigw@TEST bin]$ mkdir ./demoCA
[weigw@TEST bin]$ mkdir demoCA/newcerts
创建个空文件:
[weigw@TEST bin]$ vi demoCA/index.txt

创建文件:
[weigw@TEST bin]$ vi demoCA/serial

向文件中写入01

并且第二行空一行

解决自建ca认证后浏览器警告

用openssl自做CA自签发SSL证书

openssl、x509、crt、cer、key、csr、ssl、tls 这些都是什么鬼?

使用OpenSSL生成CSR文件,并申请全球通用SSL证书

OPENSSL生成SSL自签证书

Nginx下配置Https证书详细过程

nginx配置ssl证书实现https和http共存访问

https和http共存的nginx配置

在这里插入图片描述

基本概念

KEY 通常指私钥。

CSR 是Certificate Signing Request的缩写,即证书签名请求,这不是证书,可以简单理解成公钥,生成证书时要把这个提交给权威的证书颁发机构。

CRT 即 certificate的缩写,即证书。

X.509 是一种证书格式.对X.509证书来说,认证者总是CA或由CA指定的人,一份X.509证书是一些标准字段的集合,这些字段包含有关用户或设备及其相应公钥的信息。

X.509的证书文件,一般以.crt结尾,根据该文件的内容编码格式,可以分为以下二种格式:

PEM - Privacy Enhanced Mail,打开看文本格式,以"-----BEGIN..."开头, "-----END..."结尾,内容是BASE64编码.
Apache和*NIX服务器偏向于使用这种编码格式.

DER - Distinguished Encoding Rules,打开看是二进制格式,不可读.
Java和Windows服务器偏向于使用这种编码格式

OpenSSL 相当于SSL的一个实现,如果把SSL规范看成OO中的接口,那么OpenSSL则认为是接口的实现。接口规范本身是安全没问题的,但是具体实现可能会有不完善的地方,比如之前的"心脏出血"漏洞,就是OpenSSL中的一个bug.

key 私钥,csr 公钥,crt 证书

过程

首先,我们要先新建一个 文件目录:

mkdir -p /etc/pki/CA/
cd /etc/pki/CA/

为什么偏要这个目录??额,我也不知道不过,
在这里插入图片描述

这个目录想必是openssl默认位置了。放在一起方便点吧。

在这里插入图片描述

注意,1024位已经不安全了啊,现在要2048了,请参考:
在这里插入图片描述

所以我们认真输入:

openssl genrsa -des3 -out ca.key 2048

顺便填写密码:
在这里插入图片描述

然后,生成crt–公钥。

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

顺便填写一些信息:
请参考:
openssl、x509、crt、cer、key、csr、ssl、tls 这些都是什么鬼?
在这里插入图片描述

common name应该要填你的域名,下面这位兄弟也遇到:
解决自建ca认证后浏览器警告

在这里插入图片描述

好了,我们本地测试,先记着,

在这里插入图片描述

已经成功生成了私钥key以及CA公钥即CA根证书,然后,

生成HTTPS证书私钥
openssl genrsa -des3 -out server.pem 2048

在这里插入图片描述

生成签名请求
openssl req -new -key server.pem -out server.csr

注意,最后会问你
A challenge password ?
意思是;
在这里插入图片描述

好了,自行设置以后:

在这里插入图片描述
成功生成 csr—公钥,也是证书签名请求文件。

用CA进行签名
-- openssl ca -policy policy_anything -days 3650 -cert ca.crt -keyfile ca.key -in server.csr -out ca.crt
这里犯了一个很严重的问题!-out xxx.crt 是目标文件,不要让他覆盖 原本的 ca.crt!!!
openssl ca -policy policy_anything -days 3650 -cert ca.crt -keyfile ca.key -in server.csr -out wangwangwang.crt

然后,问题1出现:
在这里插入图片描述

ca: ./demoCA/newcerts is not a directory
./demoCA/newcerts: No such file or directory

解决方案:
在这里插入图片描述

在这里插入图片描述

于是:

mkdir -p demoCA/newcerts
touch  demoCA/index.txt
touch demoCA/serial
echo  '01'>demoCA/serial


在这里插入图片描述

然后继续执行:
在这里插入图片描述

注意!!!
这里犯了一个很严重的问题!-out xxx.crt 是目标文件,不要让他覆盖 原本的 ca.crt!!!

于是勤奋的lz重新做了一次,然后终于得到我们的重要目标文件了:
在这里插入图片描述

nginx配置https

在这里插入图片描述

好了,刚才生成的crt以及pem分别是:

/etc/pki/CA/wangwangwang.crt
/etc/pki/CA/server.pem

然后我们主要修改这些内容:

server {
            listen 80;
            listen 443 ssl;
            #server_name zou.lu;
            #root /var/www/html;
            
            #ssl on;   //这行必须要注释掉
            ssl_certificate /etc/pki/CA/wangwangwang.crt;
            ssl_certificate_key /etc/pki/CA/server.pem;
            
        }

修改为:
在这里插入图片描述

重启:

nginx -s reload

在这里插入图片描述

额。。竟然要输入密码,太不方便了!!!
好,我们输入密码试试。

在这里插入图片描述

访问主页:
http形式:
在这里插入图片描述

https方式:
在这里插入图片描述

无法访问。。

不可能,我们一步一步按照网上教程来做,于是重启一下看看:
在这里插入图片描述

好,问题出现了:

 SSL_CTX_use_PrivateKey_file("/etc/pki/CA/server.pem") failed (SSL: error:2807106B:UI routines:UI_proces

nginx ssl 证书报错

在这里插入图片描述

h好了,我们改改:

openssl rsa -in ca.key -out no-pwd-ca.key  

在这里插入图片描述

然后,更名:

mv ca.key ca-with-pwd.key
mv no-pwd-ca.key ca.key

在这里插入图片描述

重启:

在这里插入图片描述

额。。不行,所以,还是正正经经再来一个crt证书算了。

证书重制

如何为nginx配置https(免费证书)

#创建新的ca证书,用于本地测试用,全部都放到/etc/pki/CA/localhost这个目录下面去。
mkdir -p  /etc/pki/CA/localhost
 cd /etc/pki/CA/localhost

我们最后还是要放到nginx下面做证书的,不能有密码,所以,我们生成一个没有密码的ca私钥:

openssl genrsa -out ca-no-pwd.key 2048

在这里插入图片描述

生成crt

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

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/cdnight/article/details/84992407