使用xca自签https证书实现公司内网https化

我们都知道可以用openssl来自签https证书。其实有一个小工具可以图形化操作,叫做xca,链接地址 https://hohnstaedt.de/xca/

虽然是德国域名,语言还是很友好的,全是英文的,不会因为看不懂德文而烦恼。

自签名证书是什么原理?我们的系统中会带有一些公认被信任的根证书,用受信任根证书私钥签发的证书也会被认为是安全可靠的。如果我们自己弄一个根证书安装到系统中并且信任那么用这个根证书私钥签发的证书也就会被信任。说起来简单,其实背后有特别多的知识。

我不认为公网服务用自签证书合适,对用户的要求太高,但是实现公司范围内的https化或者测试使用是没问题的,在公司范围内可操作性非常高,更何况我们还可以开发一个客户端来完成这件事儿,新员工入职系统中直接装根证书。

如下是操作步骤,本文是一个简单示例,可以做的还有很多,比如吊销证书,证书管理平台等。

一、首先创建数据库

会要求输入密码,这个密码是你以后打开数据库文件需要使用的,为了安全,建议大家设置的复杂一些。

二、创建模板

先创建模板有利于减少以后重复工作。

模板分为三类,根证书模板(ca模板),服务端证书模板,客户端证书模板。

切换到Templates标签页,先创建ca模板。

按照实际情况输入信息

服务端证书模板,这里commonName不填写,这以后填写具体域名。

客户端证书模板。

三、创建根证书

切换到Certificates标签页。选择右侧的New Certificate。注意下图的所选择的信息。Apply All是一定要点击的,以后的服务端证书和客户端证书同理。

切换到弹出窗的Subject标签页,其实之前模板填写的大部分信息这里都已经自动填充了。只填写其他一些信息即可,如下图。

四、创建服务端证书

首先在证书列表中选中刚才的根证书,之后点击 New Certificate,如下图。

注意框出来的部分。

点击Apply All之后切换到Subject,在commonName填写域名,这里以mm.mojijs.com作为测试域名。

五、导出根证书并安装根证书

如下图,注意证书格式,可别把私钥一些导出来发出去了。

安装可以百度一下,各系统有差异。mac直接双击即可打开钥匙串管理。

安装完还不行,还不要信任这个根证书。

六、导出mm.mojijs.com的服务端证书

如下图,这里是把证书和私钥导出到一个文件中,也可分别导出。

七、配置nginx

把刚才的导出的服务端证书配置到nginx。

server {
listen 80;
listen 443 ssl;
server_name mm.mojijs.com;

ssl_certificate /Users/myspace/my_note/cert_test/mm.mojijs.com.pem;
ssl_certificate_key /Users/myspace/my_note/cert_test/mm.mojijs.com.pem;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;

ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;

location / {
root /Users/myspace/my_note/cert_test/;
index index.html index.htm;
}
}

八、配置host

127.0.0.1 mm.mojijs.com

九、测试

访问https://mm.mojijs.com,如下图,我们可以看到证书已经被信任了。所有已经安装了刚才根证书的设备都会认为这个链接是安全的。

十、happy

完!

推荐文章