目录

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生成证书,并解决浏览器不信任问题相关推荐

  1. Apache OpenSSL生成证书使用

    最近在学习SSL协议,这次是基于Apache服务器自带的openssl来实现的 TLS:传输层安全协议 SSL:安全套接字层 KEY:私钥 CSR:证书签名请求,即公钥,生成证书时需要将此提交给证书机 ...

  2. Openssl生成证书流程

    Openssl生成证书流程 偶然想到在内网配置https,就梳理了下利用openssl与ca生成证书的过程. 生成过程分为服务端跟客户端,这里我在一台上测试. 一.介绍 CA是Certificate ...

  3. openssl生成证书linux,linux中openssl生成证书和自签证书linux操作系统 -电脑资料

    下面来给大家介绍关于linux中openssl生成证书和自签证书的例子,整个过程都讲述的非常详细有兴趣的朋友可进入参考, 1.首先要生成服务器端的私钥(key文件):代码如下复制代码 openssl ...

  4. openssl生成证书linux,Linux下使用openssl生成证书

    利用OpenSSL生成库和命令程序,在生成的命令程序中包括对加/解密算法的测试,openssl程序,ca程序.利用openssl,ca可生成用于C/S模式的证书文件以及CA文件. 证书文件的生成步骤: ...

  5. SSL数字证书(三)使用 openssl 生成证书

    数字证书原理(〇)认识SSL SSL数字证书(一)CA.根证书与数字证书 SSL数字证书(二)使用makecert.exe签发证书 SSL数字证书(三)使用 openssl 生成证书 转载自<使 ...

  6. 如何利用OpenSSL生成证书

    此文已由作者赵斌授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 一.前言 最近为了测试内容分发网络(Content Delivery Network,简称 CDN)添加的新功 ...

  7. Nginx使用openssl生成证书文件

    方式二:使用openssl生成证书 先要确认当前系统是否有安装openssl openssl version 安装下面的命令进行生成 mkdir /root/cert cd /root/cert op ...

  8. Linux下使用OpenSSL生成证书

    Linux下使用OpenSSL生成证书 安装OpenSSL 直接用apt或者yum安装即可 生成服务器端的私钥(key文件) $ openssl genrsa -des3 -out server.ke ...

  9. OpenSSL 生成证书

    OpenSSL 生成证书 作者:Bright Xu 在当前目录创建配置文件,用于定义后面创建证书的相关配置 创建server.conf文件,并写入一下内容: oid_section = new_oid ...

最新文章

  1. [No0000A6]Visual Studio 2015 中的常用命令的默认键盘快捷键-VS2015 Shortcut
  2. CSS属性display:inline-block使用揭秘
  3. 操作系统习题7—文件系统
  4. 迁移和升级windows 2003 R2到windows 2008 SP2
  5. 拦截请求并记录相应信息-springboot
  6. VMware Workstation 8正式版下载+密钥序列号
  7. idea中右侧的Maven框消失了
  8. 对java中接口的简单理解
  9. u 20ubuntu 安装 postfix_汽车天线安装指南
  10. Tableau 10.5 安装教程
  11. linux如何部署btsync同步?
  12. MySQL学习 --- 嵌套查询
  13. java jframe 图标_java怎么修改jframe图标?
  14. 前端学习-吃豆子游戏设计
  15. ATFX:美联储会议纪要发布后,美元指数逼近105关口
  16. 设置快捷键使页面全屏
  17. Origin——全局垂直光标
  18. Qt opengl 图片实现3D效果
  19. 什么才是市场急需的前端工程师?【零基础web前端入门视频教程】
  20. 彻底掌握 Javascript(十一)日期-曾亮-专题视频课程

热门文章

  1. Latex插图,图片处理教程
  2. Prometheus监控机配置说明
  3. win7讲述人安装包_Win7如何使用语音朗读?Win7开启语音播报讲述人的方法
  4. 从零开始搭建Ubuntu系统教程
  5. Win10纯净版电脑开机黑屏有鼠标怎么办?
  6. postgresql源码学习(27)—— 事务日志⑦-日志落盘上层函数 XLogFlush
  7. 单商户商城系统功能拆解28—营销中心—砍价活动
  8. 夏敏捷第38本著作《Animate CC动画与游戏设计-微课视频版》(2022)
  9. 说服他。说不服再按着他的去办(转)
  10. 通过m3u8地址,从视频网站下载视频(.m3u8 .ts),腾讯视频m3u8