本文最后更新于 682 天前,其中的信息可能已经有所发展或是发生改变。
引入:HTTPS、域名、证书
现在的大部分网站都会开启HTTPS (HTTP over TLS) ,当网站开启HTTPS后,浏览器地址栏会显示一把锁代表通讯经过加密,若查看证书路径则会出现如下信息(此处以Google主页为例):
通常情况下,最上面的是根证书 (root certificate) ,第二级到域名证书的前一级统称为中间证书/中级证书
HTTPS保护了通信的隐私和安全,但现在所有的证书签发都需要联网申请,且需要验证TXT记录,如果我们想在本地测试时使用HTTPS,或在业务系统中使用IP证书(通常情况下IP证书价格较为昂贵),自签名证书或许是个不错的选择,但每次使用都重新签发证书未免过于麻烦,所以,我们需要自签名一个根证书(最好还有中间证书)用来签发服务器证书,并将该证书安装在设备上,使得浏览器信任。
准备环境
XCA (X - Certificate and Key management)
本次我们将使用XCA进行密钥的统一管理,关于该软件的优势和特点可以在其官网查看:https://hohnstaedt.de/xca/
- 在此处下载最新编译版本:https://hohnstaedt.de/xca/index.php/download
- 安装完成后,点击“文件”→“新建数据库”,并为其设置一个您能记得住且有一定安全性的密码
请把xdb数据库放在足够安全且容易访问的地方,每次重新打开XCA均需要重新载入
签发根证书
创建证书签名请求
- 以上操作完成后,进入“证书签名请求”选项卡,点击“创建请求”
- 在“unstructuredName”中填入你的根证书的名称(请谨慎命名,以后你的根证书会一直是这个名字)
- 在“challengePassword”中填入密码(可以不同于数据库密码)
- 模板选择“CA”,点击“应用模板所有信息”
- 切换到“主体”选项卡
- 按自己的喜好填入一下几个栏目(请谨慎填写,以后你的根证书主题信息会一直如此)
- 点击下方的“生成密钥”
此处类型建议为以下三者之一(ECC由于密钥长度明显短于另外两者,理论上处理速度会更快)
- RSA 2048
- RSA 4096
- ECC P.256
- “扩展”、“密钥用法”选项卡不建议更改
- 确认“Netscape扩展”选项卡所显示的内容与下图相同(下面的几个链接可自定义)
- 确定,此时XCA界面应该出现了一个未签发状态的签发请求
签发根证书
- 右键该选项,签发
- 此处选择“CA”+“应用模板所有信息”
- 可以到扩展页面定义根证书有效期(更改后一定要点“应用”)
- 确认
- 切换到“证书”选项卡,应显示如下信息
签发中间证书
- 右键“证书”列表中的根证书 - 创建
- 按下图操作,切记:不要选择“签发证书签名请求”!!!
- 填入以下字段,生成私钥
- 后面所有选项卡设置保持与根证书相同
- 签发
签发域名/IP证书
- 在中间证书上右键 - “创建”
- 打字打累了,看图吧
- 签发
在服务器上安装证书
- 导出服务器证书公钥
- 切换到“私钥”选项卡,导出所对应的私钥
然后按照安装一般证书的方式安装即可。
在电脑上安装证书
只需要导出及安装根证书和中间证书
手机上安装方法请自行Google,apple我习惯通过邮件发送证书,安卓貌似只能插入U盘/下载后在用户凭据中导入
导出证书
安装证书
- 右键根证书,打开方式选择“加密外壳扩展”
- 安装
- 导入为“受信任的根证书颁发机构”
- 同样的方式打开中间证书,安装为“中间证书颁发机构”
- 接下来你就可以在浏览器打开你的网站了,此时证书是可信的
大佬牛逼!!!!!!
Sync : https://community.wvbtech.com/d/2265-xca