【密码学】使用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 ```

相关推荐
漏刻有时2 小时前
宝塔服务器被篡改 Nginx Location 配置的安全风险剖析与修复指南(流量劫持、服务器资源消耗、站点功能异常、溯源困难)
服务器·nginx·安全
你知道“铁甲小宝”吗丶2 小时前
nginx代理ip哈希用法
nginx·哈希算法
代码的奴隶(艾伦·耶格尔)14 小时前
Nginx
java·服务器·nginx
液态不合群14 小时前
Nginx多服务静态资源路径冲突解决方案
运维·nginx
岁岁种桃花儿15 小时前
详解kubectl get replicaset命令及与kubectl get pods的核心区别
运维·nginx·容器·kubernetes·k8s
zbguolei16 小时前
CentOS 7.6离线安装Nginx
linux·nginx·centos
半路_出家ren16 小时前
3.python模拟勒索病毒
python·网络安全·密码学·网络攻击模型·base64·病毒·勒索病毒
倒流时光三十年1 天前
阿里云 CentOS 7 使用 docker 安装 Nginx
nginx·阿里云·docker·centos
未来之窗软件服务1 天前
服务器运维(二十四) SSL数字证书管理续期—东方仙盟练气期
运维·服务器·ssl·仙盟创梦ide·东方仙盟
羱滒1 天前
Docker Compose + Nginx + 后端服务运行环境搭建全流程指南(redis、mongdb、nginx、nacos-registry)
redis·nginx·docker·docker-compose