【密码学】使用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 小时前
宝塔SSL自动续签
网络·网络协议·ssl
東雪蓮☆7 小时前
从零开始掌握 Web 与 Nginx:入门详解
运维·服务器·前端·nginx
sun03229 小时前
使用 javax.net.ssl.HttpsURLConnection 发送 HTTP 请求_以及为了JWT通信选用OSS的Jar的【坑】
http·.net·ssl
✎﹏赤子·墨筱晗♪10 小时前
基于Nginx实现反向代理、负载均衡与动静分离完整部署指南
运维·nginx·负载均衡
草履虫建模11 小时前
在 RuoYi 中接入 3D「园区驾驶舱」:Vue2 + Three.js + Nginx
运维·开发语言·javascript·spring boot·nginx·spring cloud·微服务
deepdata_cn13 小时前
量子-resistant密码学研究
密码学·量子计算
游九尘16 小时前
服务器都是用的iis, 前端部署后报跨域,不是用同一个服务器 是前端项目的服务器做Nginx转发,还是后端项目的服务器做Nginx转发?
服务器·前端·nginx
三坛海会大神55516 小时前
nginx中配置https详解:配置SSL/TLS证书
nginx·https·ssl
✎﹏赤子·墨筱晗♪17 小时前
Nginx 配置 SSL/TLS 全指南:从安装到安全强化
nginx·安全·ssl
m0_4646082617 小时前
Nginx SSL/TLS 配置
运维·nginx·ssl