局域网自签名https证书

1、证书生成

生成密钥,采用的是des3算法

openssl genrsa -des3 -out server.key 2048

 

根据密钥签发申请文件CSR

openssl req -new -key server.key -out server.csr
#这一步主要是去除密钥的密码,便于后续部署
openssl rsa -in server.key -out server.key
#生成自签名根证书并设置证书的有效期,crt是发给客户端的证书
openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
#有的需要pem的证书,对证书做的转换
openssl x509 -in server.crt -out server.pem -outform PEM

 

2、配置Nginx

  

3、浏览器访问
使用https协议访问8080端口,但是会提示证书不可信,后面我们会详细讲解怎样解决这个问题。

对于浏览器提示证书不可信,由于采用的自签名证书,浏览器是没有我们的自签名证书导致

 

4、证书不可信解决方案
生成证书时候增加ext.ini

  

然后重新使用Openssl重新生成证书,上述配置说明该证书是IP或者域名所有的:

openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt -extfile ext.ini
生成证书,然后导出crt证书,在windows下加入到信任的根证书下面,再次访问浏览器,浏览器访问不会报错

 

二、基于域名的https

 

证书相关文件格式说明
.key: 私钥文件
.pem: 根证书公钥
.crt: 域名证书公钥

自签名文件的生成过程
这里用的工具是openssl,怎么安装可以自行查一下

普通域名的自签名
我们以域名 td.todocoder.com为例

  

输入第一步设置的密码

  

这一行是把pem 转换成 crt格式

  

这一步填写域名证书密钥需要的信息,会展示在浏览器的域名证书信息,其中最重要的是Common Name的内容,必须是对应需要https访问的域名的。

通过我们之前创建的根SSL证书颁发,创建出一个 test.testcloudide.com 的域名证书。输出是一个名为的证书文件ttestcloudide.crt(对应位置替换为自己的文件路径)

  

接下来我们看一下,在nginx 和k8s中是如何用的。

nginx 配置域名td.todocoder.com的证书
我们拿到上面几步生成的 td.todocoder.com域名的文件,tdtodocoder.key、tdtodocoder.crt
配置到nginx的配置中

  

 

然后直接访问 td.todocoder.com 在浏览器上应该可以看到证书的信息,注意此时浏览器还提示的是证书无效,不安全。后面需要在操作系统信任一下证书就可以了。

如果你用的是k8s ,可以在ingress中配置

ingress配置tls证书
创建secret

  

以上,我们把域名 td.todocoder.com的证书已经创建好了,如果不创建泛域名的证书可以直接跳过泛域名的创建过程。接下来我们看一下泛域名证书的签名流程

泛域名的自签名
泛域名是域名前面的字符不是固定的,可能会根据id生成,比如,我的 id是:fsd423dsf234dsfs, 我自己的泛域名就是 fsd423dsf234dsfs.todocoder.com ,每个用户都可以有不同的域名。那么我们只需要配置 *.todocoder.com 这个域名就可以,具体操作流程如下:

从上面第3步开始,我们需要用同一个根证书签名,所以rootCA 的证书就不用再新建了

创建生成域名ssl证书的前置文件
创建一个fanym.ext文件, 注意我们指定了subjectAltName选项。

  

注意:这里的 域名配置的 *.todocoder.com

生成域名ssl证书秘钥(fantodocoder.csr、fantodocoder.key)

  

这一步填写域名证书密钥需要的信息,会展示在浏览器的域名证书信息,其中最重要的是Common Name的内容,必须是对应需要https访问的域名的。

通过我们之前创建的根SSL证书rootCA.pem, rootCA.key颁发,创建出一个 *.todocoder.com 的域名证书。输出是一个名为的证书文件fantodocoder.crt(对应位置替换为自己的文件路径)

  

我们用泛域名 fsd423dsf234dsfs.todocoder.com访问,访问之前需要配置hosts

vi /etc/hosts
192.168.111.37 fsd423dsf234dsfs.todocoder.com
访问 fsd423dsf234dsfs.todocoder.com 可以看到我们刚刚的泛域名证书信息。

截止到这一步,我们的域名在nginx或者k8s端已经配置完成,我们想要的效果是在https 访问的时候,不报错,并且提示证书安全有效,那么需要我们在我们的操作系统上配置信任证书

各个系统下证书的信任流程
mac 下证书的添加方式
mac系统只需要添加 域名证书就可以,不用添加rootCA 证书

在mac下我们拿到证书后,双击tdtodocoder.crt文件->打开钥匙串->选择信任

然后重启浏览器再访问 td.todocoder.com,可以看到显示https 安全了

Windows下证书的添加方式
Windows 需要添加 rootCA 和域名的证书到系统里面

如果要访问 td.todocodoer.com 需要安装 rootCA.crt、tdtodocoder.crt 这两个证书

双击CA根证书->存储位置选择本地->指定证书位置(受信任的根证书颁发机构)

ubuntu下证书的添加方式
我的系统是Ubuntu 桌面版 22.04 的版本, ubuntu需要添加 rootCA 和域名的证书到系统里面

  

点回车,点空格选中 -> 回车确定

就可以了.

火狐浏览器证书的添加方式
Chrome,safari,Edge等浏览器直接就可以访问了,但是火狐浏览器(ubuntu桌面版火狐,其他系统的没试)的话需要在设置里面添加跟证书。具体操作:

点击设置-> 搜索证书,点击查看证书 -> 证书颁发机构 -> 导入 -> rootCA.crt -> 编辑信任

可以看到,火狐浏览器已经显示安全

参考
https://mp.weixin.qq.com/s/Qi2pDCBJYGymLJxBIvqvqg

 

posted @   zhaoguanhao  阅读(325)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示