如何在 openssl conf 文件中将 SubjectAltName 保持为 commonName

how to keep SubjectAltName as as commonName in openssl conf file

我正致力于在我的 centos 服务器上构建证书颁发机构。我已经按照来自 https://www.feistyduck.com/books/openssl-cookbook/ 的 OpenSSL Cookbook(很棒的东西)完成了设置。书中解释的概念和过程非常简单,并且很有魅力。但是,我觉得它有点过时并且 chrome 浏览器更改了要求主题备用名称的行为,否则即使证书完全有效,它也会发出浏览器警告。

阅读 https://www.openssl.org/docs/man1.0.2/apps/x509v3_config.html#Subject-Alternative-Name 上的文档后,我明白我需要将其包含在根 CA 和子 CA(中间证书颁发机构)的 conf 文件中。

现在我要做的是将commonName 用作SAN。这意味着我不想对 SAN 进行硬编码,而是想从 CSR 中获取 CommonName 的任何值并将其用作 SAN。 我应该在 conf 文件中放入什么来实现这一点? 我试着把 subjectAltName = $commonName 它告诉我这不是定义 SAN 的有效方法。

这是我的实际配置文件

https://pastebin.com/UtCDU4BE

不幸的是,OpenSSL conf 文件一点也不复杂,并且不可能引用以前声明的名称。

我认为通常的做法是编写一个简短的脚本来填充模板配置文件。这当然是我过去所做的。

这个答案可能会有所帮助 https://security.stackexchange.com/a/91556。正如@Jon 已经提到的。只有在模板的帮助下才有可能。 确保您验证了输入。否则有人可以在 DNS 名称中插入一个新行。 该问题的另一种解决方案可能是改用 https://github.com/cloudflare/cfssl or https://github.com/google/easypki