Pat*_*ick 2 linux openssl certificate ca x509
我偶尔遇到这个话题,试图记住这是如何完成的,然后再次找到所有不完整的答案(使用配置文件、oneliners,忽略我们真的想使用自定义 CA 来创建完整的证书链等) . 许多答案将 SAN 应用于证书请求,但在签名命令中将 SAN 搞砸了......
我想做的事?
(是的,请不要在一个命令中做所有事情,我希望我的 CA 驻留在另一台机器上)(是的,这对于其他人来说可能再次不完整。但这正是我每年需要 1-2 次,当我的 DEV 环境中的简单自签名证书,我只是通过配置信任,是不够的)(是的,您可能想要实施额外的验证步骤,如果您不是作为一个人请求和签署证书的人)
问候帕特里克
Pat*_*ick 10
让我们假设,我们想为我们局域网内的新服务器/主机设置一个自签名证书,其中 Let's Encrypt 不是我们的选择,例如 FRITZ!Box,域:fritz.box,https://fritz。框,IPv4:192.168.1.1
openssl genrsa -aes256 -out patrickca.key 4096
Run Code Online (Sandbox Code Playgroud)
关于 -aes128 或 -aes256:https ://security.stackexchange.com/q/14068
openssl req -new -key patrickca.key -x509 -out patrickca.crt -days 3650
Run Code Online (Sandbox Code Playgroud)
openssl req -new -nodes -newkey rsa:4096 -keyout fritzbox.key -out fritzbox.req -batch -subj "/C=DE/ST=Hamburg/L=Hamburg/O=Patrick CA/OU=router/CN=fritz.box" -reqexts SAN -config <(cat /etc/ssl/openssl.cnf <(printf "[SAN]\nsubjectAltName=DNS:fritz.box,IP:192.168.1.1"))
Run Code Online (Sandbox Code Playgroud)
openssl x509 -req -in fritzbox.req -CA patrickca.crt -CAkey patrickca.key -CAcreateserial -out fritzbox.crt -days 3650 -sha256 -extfile <(printf "subjectAltName=DNS:fritz.box,IP:192.168.1.1")
Run Code Online (Sandbox Code Playgroud)
cat fritzbox.key > fritzboxchain.pem
cat fritzbox.crt >> fritzboxchain.pem
cat patrickca.crt >> fritzboxchain.pem
Run Code Online (Sandbox Code Playgroud)
如果这不仅仅是一个示例,您可以将此文件导入您的 FRITZ!Box。
当然,如果您的浏览器显示有关您的 https 证书的警告消息,您当然想确认您知道自己在做什么。
您可能希望将其设置为永久例外。
但是:请将步骤 1.2 的 CA 证书导入为可信 CA。(在 05/2020 中,Firefox 设置 CN= 应该就足够了,对于 Chrome,您可能会遇到 SAN 问题,如果它仍然没有,除了您的自签名证书)