【密码学】使用mkcert安装CA、自签名ssl证书,配置nginx的https 证书笔记

文章目录

证书(CA证书,服务端证书,客户端证书)

1 安装CA

CA(Certificate Authority,证书授权)是由认证机构服务者签发,是数字签名的技术基础保障,也是网上实体身份的证明,能够证明某一实体的身份及其公钥的合法性,证明该实体与公钥二者之间的匹配关系。

在电子商务系统中,所有实体的证书都是由证书授权中心即CA中心颁发并签名的。一个完整的、安全的电子商务系统必须建立一个完整的、合理的CA体系。CA体系由证书审批部门和证书操作部门组成。

1.1 下载mkcert

mkcert 工具

https://gitee.com/stonedst/mkcert

复制代码
$ mkcert -install
Created a new local CA 💥
The local CA is now installed in the system trust store! ⚡️
The local CA is now installed in the Firefox trust store (requires browser restart)! 🦊

1.2 mkcert安装和配置根证书

首先到github下载mkcert工具,下面我以windows平台作为演示

在cmd中cd到mkcert所在的目录运行下面的命令

.\mkcert.exe -install

这条命令会创建一组根证书和私钥,根证书会被安装到系统中。输入下面的命令就可以查看到ca证书存放的位置。其中"rootCA.pem"就是根证书,有些系统比如windows可能不会认rootCA.pem可以把他改成rootCA.crt。将他发送给需要安装的自定义证书的设备,安装好之后自签名证书就不会显示不安全了。另外rootCA-key.pem是根证书的私钥文件,不可公开需要妥善保管。

复制代码
.\mkcert.exe -CAROOT

1.3设备安装根证书

1.windows

直接打开rootCA.crt,并将证书安装到受信任的根证书

2.安卓

直接在文件管理器安装rootCA.crt

3.macos

直接在文件管理器安装rootCA.crt,然后打开钥匙串-系统找到mkcert开头的证书,双击打开。设置为下图的模式就可以了。

![使用mkcert免费给群晖创建十年期自签ssl证书](https://file.jishuzhan.net/article/1738384808096043010/6750319e93122f2f677e664634242c48.webp) 4.ios ios要先安装ca证书,然后在"设置"------"通用"------"描述文件和设备管理"------验证刚才安装的ca证书。然后在"通用"------"关于本机"------"证书信任设置"信任刚才的ca证书 mkcert签发自签名证书的教程就已经结束了,rootCA.crt可以保存在一些容易获取到的地方,比如网盘上,这样去到新的地方就可以安装根证书确保访问安全了。而且根证书本身就是公开的,不需担心安全性问题,确保不被篡改就行了。 ## 2 自签名ssl证书 SSL证书一般有如下方法获取:SSL服务商购买、免费SSL服务商通过HTTP验证/API验证、自签SSL证书。 如果进行自签SSL证书,首先要有一个CA根证书,然后用CA根证书来签发用户证书。 用户进行证书申请:一般先生成一个私钥,然后用私钥生成证书请求(证书请求里应含有公钥信息),再利用证书服务器的CA 根证书来签发证书。 自签可以生成任意域名或IP的SSL证书,只不过是不信任的,需要自行将该CA加入信任。 ### 2.1 CA 证书过程: > 生成CA私钥(.key)--\>生成CA证书请求(.csr)--\>自签名得到根证书(.crt)(CA给自已颁发的证书) ### 2.2 自签名流程 > 生成服务端key(.key)--\>生成服务端请求文件(.csr)--\>生成服务端证书,使用CA根证书签发(.crt)--\>生成pem格式证书--\>生成p12格式证书 自签SSL一般需要使用openssl命令步骤比较繁琐,今天我们借助mkcert工具来一键生成SSL证书并且信任该CA。 ### 2.3签发证书 mkcert签发证书非常的简单,用下列的命令就可以给"192.168.100.100"签发一个ssl证书 .\mkcert.exe 192.168.100.100 当然也可以给域名签发一个ssl证书,比如给\*.home.com这个泛解析域名签发ssl证书 .\mkcert.exe *.home.com 也可以给多个域名多个ip签发ssl证书,比如我给\*.home.com, \*.nas.com, \*.Router.com, 192.168.100.100, 10.10.100.100。等三个域名,2个ip签发在同一张ssl证书中。 .\mkcert.exe *.home.com *.router.com *.nas.com 192.168.100.100 10.10.100.100 .\mkcert.exe *.abiuni.com *.techco.club 8.139.98.150 8.219.252.173 ### 2.4给已有的证书请求(.csr)签发证书 如果已有请求文件csr文件和私钥,然后用csr文件给mkcert签发的ssl证书才能使用。[![使用mkcert免费给群晖创建十年期自签ssl证书](https://file.jishuzhan.net/article/1738384808096043010/7ef11a19c34d552d872c0afaf97bd228.webp)](https://post.smzdm.com/p/aeveozgm/pic_4/) 把证书下载好后,将server.csr复制到mkcert所在的目录执行下面的命令,就可以根据csr文件签发出ssl证书。 .\mkcert.exe -csr server.csr 将生成的证书和里面的server.key(私钥)一起设置配置好证书的使用就可以了。 ### 参考文献 https://post.smzdm.com/p/aeveozgm/ https://zhuanlan.zhihu.com/p/636932873 https://blog.csdn.net/Amorbcbc/article/details/131646799 ## 3 配置nginx的https ### 3.1 查看NGINX是否安装SSL模块 ./nginx -V # 注意,是大写的V,如果有ssl_module那就说明有,没有就自行安装 ### 3.2 配置config文件 server { listen 443; server_name 8.138.98.150; ssl on; ssl_certificate /usr/share/nginx/html/card/com.pem; ssl_certificate_key /usr/share/nginx/html/card/com.key; location / { root /usr/share/nginx/html; index index.html index.htm index.php; } } 重启nginx ```c service nginx reload ```

相关推荐
其实防守也摸鱼5 小时前
CTF密码学综合教学指南--第五章
开发语言·网络·笔记·python·安全·网络安全·密码学
Zevalin爱灰灰7 小时前
现代密码学 第二章——流密码【上】
密码学
MiNG MENS10 小时前
nginx 代理 redis
运维·redis·nginx
珊瑚怪人11 小时前
一个域名问题
nginx
dxdz13 小时前
一文搞定 Linux Nginx 从安装、启动到 nginx.conf 全配置详解(新手也能看懂)
nginx
遇见火星13 小时前
Nginx 负载均衡配置模板:轮询、权重、IP哈希、最少连接
tcp/ip·nginx·负载均衡
开源Z14 小时前
WeDPR v3.0 适配国密(SM)区块链节点部署实战:填坑官方文档未覆盖的配置
区块链·密码学·可信计算技术
untE EADO16 小时前
Nginx代理到https地址忽略证书验证配置
运维·nginx·https
Treh UNFO18 小时前
nginx的重定向
大数据·数据库·nginx
理人综艺好会18 小时前
nginx了解
运维·nginx