300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 自制ca证书 nginx配置https访问

自制ca证书 nginx配置https访问

时间:2019-06-08 01:20:01

相关推荐

自制ca证书 nginx配置https访问

CA:证书颁发机构。有受信任的第三方颁发机构,也有个人的。但是自己充当颁发机构的话是不受浏览器信任的。

CA证书:由CA机构颁发的证书,相当于盖公章。是由颁发机构的私钥给需要证书方的公钥加密生成。

这里需要两个密钥对,一个颁发方,一个是请求证书方。

颁发证书过程:

1.请求方假定叫a事先生成密钥对,也可以是颁发机构假定叫b代为生成。有了密钥对之后,请求方a保管好私钥,将公钥给机构b,因为需要b给它的公钥加上数字认证,也就是生成证书。

2.机构b对a的身份进行确认,自制的话不用,比如电话核实或者邮件核实是否是a提交的公钥。

3.b确认后,就用自己的私钥对a的公钥添加数字签名,就生成了ca证书。之后a就用b颁发的ca证书可以使用ssl协议进行加密传输网络数据。

加入这时c去对a进行访问,c得到a的数字证书后,就先用b的公钥对数字签名进行验证,如果核实就得到了a的公钥,c就用a的公钥加密需要发送的消息,a得到后用私钥解密即可。之后a和c协商生成对话密钥,之后就用对话密钥互相传输消息,关于对话密钥的生成可以查看ssl协议机制。

这里为啥需要是受信任的第三方的机构呢?一句话:只要机构的数字证书可信,那么里面的公钥也就可信。想象一个场景:你的报文在传输过程中被其他人截获,别人也可以制作出和你一样的数字证书出来,里面放的是他的公钥,那么他就可以再截获报文用自己的私钥解密,就可以得到你传输的消息内容。

自制ca证书

环境说明:

两台centos7,当然也可以用一台:

服务端:192.168.247.100

nginx端:192.168.247.101

服务端操作

1.安装opensslyum install -y openssl

openssl是ssl协议的程序

查看openssl配置文件内容,里面包含证书存放路径等信息:

vim /etc/pki/tls/fdir = /etc/pki/CA --证书存放主目录certs = $dir/certs --存储签发的数字证书database = $dir/index.txt --记录颁发的证书信息serial= $dir/serial--证书编号certificate= $dir/cacert.pem --本地自签名数字证书private_key= $dir/private/cakey.pem --用于签发的私钥

创建证书私钥:

openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048

生成本地数字证书:

openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 365

一次填写国家,省份,城市,公司到位名称,个人或组织名称,域名,邮箱。

创建两个文件:

cd /etc/pki/CAtouch index.txtecho 01 > serial

服务端好了,nginx服务器操作:

也是先生成私钥文件,自定义文件路径:

mkdir test_sslcd test_sslopenssl genrsa -out /root/test_ssl/nginx.key 2048生成请求文件,服务器端等下用这个请求文件来生成数字证书。前面服务端其实也可以先生成请求文件再生成数字证书。openssl req -new -key nginx.key -out nginx.csr --填写信息中签发的机构、省份、城市要和上面CA生成的机构一样,server name是域名

将请求文件发给服务端:

scp nginx.csr 192.168.247.100:~/

服务端操作:

给这个请求文件生成签名,生成数字证书;

openssl ca -in /root/nginx.csr -out /etc/pki/CA/certs/nginx.crt -days 365两个y即可

最后把这个数字证书发回给nginx端:

scp /etc/pki/CA/certs/nginx.crt 192.168.247.101:~/test_ssl/

数字证书两边就完成了。

nginx配置ssl

vim /usr/local/nginx/conf/vhost/default.confserver{listen 443 ssl;server_name ;root /data/wwwroot/default/;index index.php index.html index.htm;ssl on;ssl_certificate /root/test_ssl/nginx.crt;ssl_certificate_key /root/test_ssl/nginx.key;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_ciphers ALL:!DH:!EXPORT:!RC4:+HIGH:+MEDIUM:!eNULL;ssl_prefer_server_ciphers on;}

最后浏览器访问结果:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。