翻遍多篇自签ssl证书资料总结的经验,不过还是推荐用阿里云免费的证书。因内网需要用到的证书,所以使用了自签ssl。

文章目录

  • 介绍
  • 生成证书
    • 成为CA颁发机构
    • 创建CA签名证书
  • nginx项目配置文件
  • 额外步骤(至少适用于Mac):
  • 访问项目地址

介绍

HTTPS服务是工作在SSL/TLS上的HTTP。
首先简单区分一下HTTPS,SSL ,TLS ,OpenSSL这四者的关系:

  • SSL:(Secure Socket Layer,安全套接字层)是在客户端和服务器之间建立一条SSL安全通道的安全协议;
  • TLS:(Transport Layer Security,传输层安全协议),用于两个应用程序之间提供保密性和数据完整性;
  • TLS的前身是SSL;
  • OpenSSL是TLS/SSL协议的开源实现,提供开发库和命令行程序;
  • HTTPS是HTTP的加密版,底层使用的加密协议是TLS。

结论:SSL/TLS 是协议,OpenSSL是协议的代码实现。

509证书包含三个文件:key,csr,crt。

  • key是服务器上的私钥文件,用于对发送给客户端数据的加密,以及对从客户端接收到数据的解密
  • csr是证书签名请求文件,用于提交给证书颁发机构(CA)对证书签名
  • crt是由证书颁发机构(CA)签名后的证书,或者是开发者自签名的证书,包含证书持有人的信息,持有人的公钥,以及签署者的签名等信息

备注:在密码学中,X.509是一个标准,规范了公开秘钥认证、证书吊销列表、授权凭证、凭证路径验证算法等。

首先你必需确保你的服务器上安装了openssl

openssl version -a

生成证书

  1. 成为自己的CA
  2. 然后将SSL证书签名为CA
  3. 然后将CA证书(而不是SSL证书,该证书到您的服务器上)导入Chrome / Chromium。(是的,即使在Linux上也可以。)

成为CA颁发机构

生成私钥(会让你设置密码)

openssl genrsa -des3 -out myCA.key 2048

消除key的密码

openssl rsa -in myCA.key -out myCA.key

生成pem文件

openssl req -utf8 -x509 -new -nodes -key myCA.key -sha256 -days 825 -out myCA.pem

加参数-utf8 是因为生成的组织和城市使用中文会乱码

创建CA签名证书

生成私钥

openssl genrsa -out server.key 2048

创建证书签名请求

openssl req -new -key server.key -out server.csr

为扩展创建一个配置文件

>server.ext cat <<-EOFauthorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = www.baidu.com # Be sure to include the domain name here because Common Name is not so commonly honoured by itself
DNS.2 = www.sougou.com # Optionally, add additional domains (I've added a subdomain here)
IP.1 = 192.168.1.1 # Optionally, add an IP address (if the connection which you have planned requires it)
EOF

创建签名证书

openssl x509 -req -in server.csr -CA myCA.pem -CAkey myCA.key -CAcreateserial \
-out server.crt -days 3650 -sha256 -extfile server.ext

3650是证书有效期天数

nginx项目配置文件

找到.crt .key文件路径

ssl_certificate /Users/wxiangqian/ssl/server.crt;
ssl_certificate_key /Users/wxiangqian/ssl/server.key;

重启NGINX

sudo nginx -s reload

额外步骤(至少适用于Mac):

myCA.pem在您的Chrome设置中以授权方式导入(设置>管理证书>权限>导入)
在“文件>导入文件”中导入CA证书,然后在列表中找到它,右键单击它,展开“>“信任”,然后选择“始终”

访问项目地址

因为是自签证书,没有通过CA机构认证,所以会显示不安全

点击证书会查看到该证书的详细信息

如果出现以下情况,则需要导入证书

您的连接不是私密连接
攻击者可能会试图从 x.x.x.x 窃取您的信息(例如:密码、通讯内容或信用卡信息)。了解详情
NET::ERR_CERT_INVALID

将您访问的部分网页的网址、有限的系统信息以及部分网页内容发送给 Google,以帮助我们提升 Chrome 的安全性。隐私权政策
x.x.x.x 通常会使用加密技术来保护您的信息。Google Chrome 此次尝试连接到 x.x.x.x 时,此网站发回了异常的错误凭据。这可能是因为有攻击者在试图冒充 x.x.x.x,或 Wi-Fi 登录屏幕中断了此次连接。请放心,您的信息仍然是安全的,因为 Google Chrome 尚未进行任何数据交换便停止了连接。

您目前无法访问 x.x.x.x,因为此网站发送了 Google Chrome 无法处理的杂乱凭据。网络错误和攻击通常是暂时的,因此,此网页稍后可能会恢复正常。

解决:就是在当前页面用键盘输入 thisisunsafe ,不是在地址栏输入,就直接敲键盘就行了,页面即会自动刷新进入网页。

最终生成的文件们为:

Crt证书内容查看
https://www.getssl.cn/decode_crt.php

参考文章:
https://stackoverflow.com/questions/7580508/getting-chrome-to-accept-self-signed-localhost-certificate
https://blog.csdn.net/u013066244/article/details/78725842

Linux下OpenSSL自签ssl证书相关推荐

  1. linux ssl证书卸载,linux下nginx怎么卸载ssl证书

    常见的情况下,Linux下nginx一般的ssl配置文件是这样的: server { listen 443; server_name example.com; root /apps/www; inde ...

  2. Linux下openSSL安装并颁发证书

    转载,原文出处:https://www.cnblogs.com/zgxblog/p/13696139.html 一.openssl检查安装 1.查看系统是否安装:openssl version -a ...

  3. Linux下OpenSSL的安装与使用

    Linux下OpenSSL的安装与使用 OpenSSL简介 OpenSSL是一个SSL协议的开源实现,采用C语言作为开发语言,具备了跨平台的能力,支持Unix/Linux.Windows.Mac OS ...

  4. Linux 使用openssl ca方式签发证书

    前言 Linux 使用openssl x509方式签发证书(推荐用这种方式):https://blog.csdn.net/QianLiStudent/article/details/109818208 ...

  5. Linux下生成https自签名证书,解决苹果发布问题重新整理

    开心一笑 [我今天被两个人揍了.原因是--早上去买早点,在楼下看见一男的把一女的围在墙角,我正义的过去喊了一句"禽兽放开那个畜生.] 视频教程 大家好,我录制的视频<Java之优雅编程 ...

  6. 利用 Caddy 轻松实现反向代理/镜像(支持自签SSL证书)

    利用 Caddy 轻松实现反向代理/镜像(支持自签SSL证书) 文章目录 官网地址 部署 Caddy 配置文件 服务器IP 反向代理 域名 反向代理 HTTP 域名 反向代理 HTTPS HTTP重定 ...

  7. Nginx下配置Comodo Essential SSL证书

    Nginx下配置Comodo Essential SSL证书 Comodo 官网:http://www.comodo.cn/ Comodo 证书官网: http://www.instantssl.cn ...

  8. nginx--基于openssl自颁发SSL证书实现HTTPS协议安全访问网站

    学习背景 大家在nginx安装(nginx安装教程)后,启动nginx,访问静态页面时,一般都是直接通过HTTP协议进行访问页面,如下图所示: 但实际应用中,有很多网站基于安全方面上的考虑,都有自己的 ...

  9. Linux服务器上Tomcat配置SSL证书并自动续期

    本文最后编辑时间:2019-11-12 1.环境:centos7 BCC Tomcat+MySQL+jdk 2.lets encrypt官网地址:https://letsencrypt.org 3.安 ...

最新文章

  1. 如何保护Ubuntu 16.04上的NGINX Web服务器
  2. 跟vczh看实例学编译原理——一:Tinymoe的设计哲学
  3. 【机器学习】LBP特征融合最大灰度差、平均灰度、平均梯度改善SVM检测效果
  4. P3327 约数的个数和 [约数函数性质,数论分块]
  5. mysql中不要 秒的函数_Mysql中日期和时间函数应用不用求人 | 很文博客
  6. CANopen | 对象字典OD 01 - canfestival对象字典编辑软件安装与使用
  7. D3.js系列——布局:饼状图和力导向图
  8. 可以设置选项背景颜色的DropDownList
  9. python热度评价指标_编程语言流行指数四月榜单发布:Python 持续强势,Java 热度减退...
  10. [svc]证书学习索引
  11. 戴文的Linux内核专题:08内核配置(4)
  12. Confluence 6 workbox 的位置
  13. 快速查找对方IP地址经典技巧汇总
  14. BOOST 升压电路调试笔记
  15. 微电子电路——例题总结
  16. linux 卸载skype,在Debian 10操作系统上安装和卸载Skype的方法
  17. Python 文件的读写操作
  18. 主流低功耗服务器u,新组低功耗NAS服务器(1037U)分享
  19. HTML之基础篇--陈小沫
  20. 你是否同意放开二胎政策

热门文章

  1. linux 批量指定文件夹压缩,排除某个不压缩,查看文件大小,查看磁盘空间
  2. 大数据思维养成从认识大数据的本质开始
  3. Mozilla准备推付费版Firefox浏览器
  4. TensorFlow2微调EfficientNet
  5. windows无法访问指定设备路径或文件怎么回事(系统找不到指定路径解决方法)
  6. Cisco Packet Tracer 思科常用命令
  7. Monotonic Chunkwise Attention(MoChA)——李宏毅人类语言处理
  8. 国债期货合约代码是什么字母
  9. 数学在计算机密码学中的运用,计算机密码学的数学引论.ppt
  10. 少儿Python每日一题(13):阿克曼函数