
2024年,全球仍有超过60%的企业内部系统依赖自签数字证书来加密内网通信——这个数字比五年前只下降了8%。本地证书制作教程的搜索量反而涨了。为什么?因为云服务崩一次,你就知道手里有张自己签的证书多踏实。
说白了,这套本地证书制作教程就是教你在自己的机器上,用几行命令生成一套能用的数字证书。不依赖任何第三方平台,不需要注册账号,断网也能干。下面直接按步骤走。
第一步:装好OpenSSL,别用系统自带的旧版本
Windows用户去 slproweb.com 下载Win64 OpenSSL v3.3.1(2024年10月的最新稳定版),安装时选“复制DLL到Windows系统目录”,不然命令行会报找不到 libcrypto-3-x64.dll 的错。macOS和Linux用户终端里敲 openssl version,低于3.0的建议用Homebrew或apt升级。
这一步踩坑的人最多。很多人拿着Windows自带的0.9.8版本瞎折腾半天,生成的证书格式现代浏览器根本不认。别省这个时间。
第二步:一条命令生成私钥和证书请求
打开终端,进入你想存放证书的目录,执行:
openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr
系统会让你填国家代码、省份、组织名、域名。域名那一栏务必填你实际要用的地址,比如 localhost 或者 192.168.1.100。填错了证书拿到浏览器里就是红锁警告。
这一条命令同时干了三件事:生成2048位RSA私钥(server.key)、去掉私钥密码保护(-nodes,省得每次启动服务都输密码)、生成证书签名请求(server.csr)。私钥文件权限记得改成600,Linux下 chmod 600 server.key,否则Apache会拒绝启动。
第三步:签发证书——自签和CA签两条路
自签最简单,一条命令:
openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
这样签出来的证书有效期十年,适合内网测试、NAS管理界面、路由器后台、公司内部OA系统。浏览器会提示“不受信任”,手动添加例外即可。
如果你想在局域网内多台机器之间互相信任,就建一个本地CA(证书颁发机构)。先给CA生成自己的私钥和证书,再用CA的私钥给服务器证书签名。这样所有安装了CA根证书的设备,访问服务器时都不会有安全警告。这一步属于局域网证书体系搭建的进阶内容,值得单独研究。
坦白讲,90%的个人场景用自签就够了。别一上来就搞CA,累。
第四步:配置到具体服务里
拿Nginx举例。把 server.crt 和 server.key 放到 /etc/nginx/ssl/ 目录,然后在站点配置里加:
- ssl_certificate /etc/nginx/ssl/server.crt;
- ssl_certificate_key /etc/nginx/ssl/server.key;
重启Nginx,访问 https://你的域名 ,浏览器会弹警告——点“高级”然后“继续前往”就行。这不是证书坏了,是浏览器不认自签CA。
Apache、Tomcat、Node.js的配置方式不同,但核心都是指向这两个文件。网上搜“你的服务名 + SSL配置”一堆现成答案。关键是证书文件路径别写错。
本地证书制作教程里的三个致命坑
第一个坑:私钥丢了。私钥文件一旦删除,你签的证书就是废纸,只能重新生成。备份私钥比备份证书重要一百倍。
第二个坑:域名不匹配。证书里写的CN是 localhost,你却用 127.0.0.1 访问,浏览器照样报错。生成时把CN和SAN(Subject Alternative Name)都写上,一条命令加 -addext "subjectAltName=DNS:localhost,IP:127.0.0.1" 就解决。
第三个坑:有效期太短。默认命令不带 -days 参数有时只给30天。生产测试环境至少365天起,否则隔一个月就要重签一次,烦死。
这套流程完整跑下来,新手大概需要20分钟。第二次做,5分钟搞定。速度上来了,你对证书机制的理解也扎实了——这就是为什么我不推荐全程用在线生成器。那些工具帮你签好的同时,私钥也经过了它们的服务器。内网证书无所谓,但涉及生产环境,私钥出不了你的机器才是底线。
回到开头的问题:在线工具会取代本地证书制作吗?不会。只要还有人需要离线部署、内网隔离、完全掌控私钥,这套本地证书制作教程就永远有它的位置。与其每次遇到证书问题都抓瞎,不如花半小时把流程跑一遍,以后HTTPS服务部署再也不求人。