openssl生成证书,并解决浏览器不信任问题
目录
1. 前言
2. 生成证书
3. 证书网站生成新证书
4. 配置 nginx
5. 访问 HTTPS 地址
6. 一些可能问题处理
1. 前言
关于SSL的理论知识就不细说了,也了解得不是很深入。
这里主要是记录一下 SSL 证书的生成以及证书配置后发现chrome浏览器访问网站会提示网站不安全的问题。
大致流程如下,如果有两个域名,应该只需要生成自签名证书就可以了。
但是我只有一个域名,所以只能用其他的方式解决。openssl 的安装过程比较简单,不详细记录
2. 生成证书
证书的生成过程主要参考了:https://blog.51cto.com/1inux/1638154
第一步 生成私钥文件
命令:sudo openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048
[centos@ip ssl]$ sudo openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048
Generating RSA private key, 2048 bit long modulus
...........+++
......................+++
e is 65537 (0x10001)
** 检查:
sudo vim /etc/pki/CA/private/cakey.pem
第二步 生成自签证书
命令:sudo openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 365
[centos@ip ssl]$ sudo openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 365
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) []:Guangdong
Locality Name (eg, city) [Default City]:Shenzhen
Organization Name (eg, company) [Default Company Ltd]:Walle
Organizational Unit Name (eg, section) []:Test
Common Name (eg, your name or your server's hostname) []:certmall.trustauth.cn
Email Address []:root@amwalle.com
-key 私钥文件(指明从哪个私钥文件中提取公钥创建证书签署请求)
-out 指定证书文件存放在位置
-new 生成新的证书签署请求;
-days n 证书有效时长,单位为“天”;
-x509 生成自签证书
** 参数中带-x509表示直接生成自签证书,不带则表示生成证书签署请求
第三步 生成私钥
命令:sudo openssl genrsa -out certificate.key 2048
[centos@ip ssl]$ sudo openssl genrsa -out certificate.key 2048
Generating RSA private key, 2048 bit long modulus
............................................+++
..............................................................+++
e is 65537 (0x10001)
第四步 生成请求签署文件:
命令:sudo openssl req -new -key certificate.key -out certificate.csr
[centos@ip ssl]$ sudo openssl req -new -key certificate.key -out certificate.csr
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) []:Guangdong
Locality Name (eg, city) [Default City]:Shenzhen
Organization Name (eg, company) [Default Company Ltd]:Walle
Organizational Unit Name (eg, section) []:Test
Common Name (eg, your name or your server's hostname) []:www.amwalle.com // 你要访问的域名
Email Address []:root@amwalle.comPlease enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: // 密码
An optional company name []:Ops
** 这里的 hostname 就是部署的工程所在的域名地址,字段与生成自签证书时填写一致即可
第五步 签署证书
做签署证书之前,要先执行以下两个命令(签署证书的时候会用到,否则会报错):
sudo touch /etc/pki/CA/index.txt
echo 01 | sudo tee /etc/pki/CA/serial
签署证书命令:sudo openssl ca -in certificate.csr -out certificate.crt -days 365
[centos@ip ssl]$ sudo openssl ca -in certificate.csr -out certificate.crt -days 365
Using configuration from /etc/pki/tls/openssl.cnf
Check that the request matches the signature
Signature ok
Certificate Details:Serial Number: 2 (0x2)ValidityNot Before: Jun 2 13:26:26 2019 GMTNot After : Jun 1 13:26:26 2020 GMTSubject:countryName = CNstateOrProvinceName = GuangdongorganizationName = WalleorganizationalUnitName = TestcommonName = www.amwalle.comemailAddress = root@amwalle.comX509v3 extensions:X509v3 Basic Constraints: CA:FALSENetscape Comment: OpenSSL Generated CertificateX509v3 Subject Key Identifier: 61:EA:60:4D:0C:80:C4:03:89:AF:B6:DB:AE:40:E8:AC:4C:2D:29:64X509v3 Authority Key Identifier: keyid:6F:DE:B1:A8:8B:88:F3:BE:BE:82:CB:E4:2C:85:A1:F0:25:53:50:96Certificate is to be certified until Jun 1 13:26:26 2020 GMT (365 days)
Sign the certificate? [y/n]:y1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
**
-in 证书请求签署文件
-out 签发后的证书文件
-days 证书有效天数
到这一步,我们得到了下面三个文件:
certificate.crt certificate.csr certificate.key
如果这时直接用certificate.crt 和 certificate.key 配置 nginx,chrome会提示网站不安全
点击“不安全”,会提示“证书不受信任”:
这时,可以去免费的证书申请网站上申请证书来解决这个问题
3. 证书网站生成新证书
免费 HTTPS 证书申请网站:
* https://freessl.cn/? (有效期更长)
* https://certmall.trustauth.cn/Free/index.html
以第一个为例。
第一步 通过 CSR 进行创建
从上一节生成的 certificate.csr,读取其内容并粘贴到下面的文本框:
命令:sudo vim certificate.csr
第二步 DNS验证
这里要去你的域名提供商处,配置DNS规则,来证明你对该域名拥有所有权。
根据上面的信息,新增(或者修改已经存在的相同规则)如下:
** 这里是阿里云里面配置DNS的一个示例
配置完成之后,点击第一张图片里面的“配置完成,检测一下”:
** 如果检测结果为 匹配,则可以再点击第一张图片里面的“点击验证”
第三步 下载证书
第四步 上传新证书
证书下载之后解压,得到 full_chain.pem
** https://certmall.trustauth.cn/Free/index.html 用这个生成得到的是 certificate.crt
将 full_chain.pem 上传至自己的服务器(也可以在服务器上新建一个相同的文件,然后把内容复制上去)
4. 配置 nginx
第一步 配置 nginx.conf
首先进入 nginx 配置目录,执行:sudo vim nginx.conf
在 http 中新增配置如下:
server {listen 443 ssl;server_name www.amwalle.com;ssl_certificate full_chain.pem;ssl_certificate_key certificate.key;ssl_session_cache shared:SSL:1m;ssl_session_timeout 5m;ssl_ciphers HIGH:!aNULL:!MD5;ssl_prefer_server_ciphers on;location /index {proxy_pass http://127.0.0.1:7001/index;}location /test {proxy_pass http://127.0.0.1:7001/test;}}
** 其中,full_chain.pem 是上一节生成的,certificate.key 是第二节生成的
** 如果是用 https://certmall.trustauth.cn/Free/index.html 生成,那么配置如下:
server {listen 443 ssl;server_name www.amwalle.com;ssl_certificate certificate.crt;ssl_certificate_key certificate.key;ssl_session_cache shared:SSL:1m;ssl_session_timeout 5m;ssl_ciphers HIGH:!aNULL:!MD5;ssl_prefer_server_ciphers on;location /index {proxy_pass http://127.0.0.1:7001/index;}location /test {proxy_pass http://127.0.0.1:7001/test;}}
第二步 检查配置
进入 nginx 所在目录,执行:sudo ./nginx -t
[centos@ip sbin]$ sudo ./nginx -t
nginx: the configuration file /opt/openresty/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /opt/openresty/nginx/conf/nginx.conf test is successful
第三步 重新加载 nginx
在 nginx 目录下,执行:sudo ./nginx -s reload
5. 访问 HTTPS 地址
检查访问是否正常:
查看证书:
6. 一些可能问题处理
** 对于下面的问题,执行该命令解决:sudo touch /etc/pki/CA/index.txt
[centos@ip ssl]$ sudo openssl ca -in certificate.csr -out certificate.crt -days 365
Using configuration from /etc/pki/tls/openssl.cnf
/etc/pki/CA/index.txt: No such file or directory
unable to open '/etc/pki/CA/index.txt'
139981965662096:error:02001002:system library:fopen:No such file or directory:bss_file.c:402:fopen('/etc/pki/CA/index.txt','r')
139981965662096:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:404:
** 对于下面的问题,执行该命令解决:echo 01 | sudo tee /etc/pki/CA/serial
[centos@ip ssl]$ sudo openssl ca -in certificate.csr -out certificate.crt -days 365
Using configuration from /etc/pki/tls/openssl.cnf
/etc/pki/CA/serial: No such file or directory
error while loading serial number
139630067787664:error:02001002:system library:fopen:No such file or directory:bss_file.c:402:fopen('/etc/pki/CA/serial','r')
139630067787664:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:404:
** 如果在多次生成证书的过程中报下面的错误,可以通过先删除,再重新创建 index.txt 文件来解决
TXT_DB error
** 如果在 nginx 测试的过程中报如下错误,可能是由于复制的证书文件不对,检查一下正是是否复制完整
failed (SSL: error:0906D06C:PEM routines:PEM_read_bio:no start line:Expecting: TRUSTED CERTIFICATE)
** 如果出现响应时间过长,可能是由于防火墙或者安全组设置问题,检查一下防火墙配置
openssl生成证书,并解决浏览器不信任问题相关推荐
- Apache OpenSSL生成证书使用
最近在学习SSL协议,这次是基于Apache服务器自带的openssl来实现的 TLS:传输层安全协议 SSL:安全套接字层 KEY:私钥 CSR:证书签名请求,即公钥,生成证书时需要将此提交给证书机 ...
- Openssl生成证书流程
Openssl生成证书流程 偶然想到在内网配置https,就梳理了下利用openssl与ca生成证书的过程. 生成过程分为服务端跟客户端,这里我在一台上测试. 一.介绍 CA是Certificate ...
- openssl生成证书linux,linux中openssl生成证书和自签证书linux操作系统 -电脑资料
下面来给大家介绍关于linux中openssl生成证书和自签证书的例子,整个过程都讲述的非常详细有兴趣的朋友可进入参考, 1.首先要生成服务器端的私钥(key文件):代码如下复制代码 openssl ...
- openssl生成证书linux,Linux下使用openssl生成证书
利用OpenSSL生成库和命令程序,在生成的命令程序中包括对加/解密算法的测试,openssl程序,ca程序.利用openssl,ca可生成用于C/S模式的证书文件以及CA文件. 证书文件的生成步骤: ...
- SSL数字证书(三)使用 openssl 生成证书
数字证书原理(〇)认识SSL SSL数字证书(一)CA.根证书与数字证书 SSL数字证书(二)使用makecert.exe签发证书 SSL数字证书(三)使用 openssl 生成证书 转载自<使 ...
- 如何利用OpenSSL生成证书
此文已由作者赵斌授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 一.前言 最近为了测试内容分发网络(Content Delivery Network,简称 CDN)添加的新功 ...
- Nginx使用openssl生成证书文件
方式二:使用openssl生成证书 先要确认当前系统是否有安装openssl openssl version 安装下面的命令进行生成 mkdir /root/cert cd /root/cert op ...
- Linux下使用OpenSSL生成证书
Linux下使用OpenSSL生成证书 安装OpenSSL 直接用apt或者yum安装即可 生成服务器端的私钥(key文件) $ openssl genrsa -des3 -out server.ke ...
- OpenSSL 生成证书
OpenSSL 生成证书 作者:Bright Xu 在当前目录创建配置文件,用于定义后面创建证书的相关配置 创建server.conf文件,并写入一下内容: oid_section = new_oid ...
最新文章
- [No0000A6]Visual Studio 2015 中的常用命令的默认键盘快捷键-VS2015 Shortcut
- CSS属性display:inline-block使用揭秘
- 操作系统习题7—文件系统
- 迁移和升级windows 2003 R2到windows 2008 SP2
- 拦截请求并记录相应信息-springboot
- VMware Workstation 8正式版下载+密钥序列号
- idea中右侧的Maven框消失了
- 对java中接口的简单理解
- u 20ubuntu 安装 postfix_汽车天线安装指南
- Tableau 10.5 安装教程
- linux如何部署btsync同步?
- MySQL学习 --- 嵌套查询
- java jframe 图标_java怎么修改jframe图标?
- 前端学习-吃豆子游戏设计
- ATFX:美联储会议纪要发布后,美元指数逼近105关口
- 设置快捷键使页面全屏
- Origin——全局垂直光标
- Qt opengl 图片实现3D效果
- 什么才是市场急需的前端工程师?【零基础web前端入门视频教程】
- 彻底掌握 Javascript(十一)日期-曾亮-专题视频课程
热门文章
- Latex插图,图片处理教程
- Prometheus监控机配置说明
- win7讲述人安装包_Win7如何使用语音朗读?Win7开启语音播报讲述人的方法
- 从零开始搭建Ubuntu系统教程
- Win10纯净版电脑开机黑屏有鼠标怎么办?
- postgresql源码学习(27)—— 事务日志⑦-日志落盘上层函数 XLogFlush
- 单商户商城系统功能拆解28—营销中心—砍价活动
- 夏敏捷第38本著作《Animate CC动画与游戏设计-微课视频版》(2022)
- 说服他。说不服再按着他的去办(转)
- 通过m3u8地址,从视频网站下载视频(.m3u8 .ts),腾讯视频m3u8