X509 證書 - 是否有任何命名約定?
購買證書時的命名約定是什麼(如果有)?
當為特定伺服器購買 TLS/HTTPS 證書時,我自然會預設使用伺服器的名稱。例如,如果伺服器名為 MOONSERVER,我會將 x509 證書的主題設置為 MOONSERVER。
此外,我需要使用另一個證書進行消息簽名。我應該怎麼稱呼這個?有效名稱的規則是什麼?例如,連字元、下劃線等可以嗎?名稱是否區分大小寫?
當您購買這些證書時,這些欄位的內容可能由證書銷售商的使用者界面管理,該使用者界面有望對您輸入的值進行一些完整性檢查。
您應該在主題欄位中放置的資訊取決於應用程序等。
HTTPS,它只是 HTTP over TLS 的一種實現,由 RFC 2818 管理,它規定伺服器標識必須使用主題備用名稱(SAN) 擴展的dnsName欄位(如果存在)。
CA/Browser 論壇是由商業 CA 和瀏覽器供應商組成的聯盟,它添加了更嚴格的限制,並期望伺服器標識僅使用 SAN 擴展(即,不檢查主題欄位中的任何伺服器 DNS 名稱)。因此,如果您有一個最終使用者使用通用 Web 瀏覽器(幾乎是我們所有人)的 Web 應用程序,那麼您將需要遵循 CA/B 論壇的要求並在 SAN 中擁有您的主機的 DNS 名稱。
請注意,TLS 本身並沒有對名稱定義任何限制,因此使用 TLS 的其他應用程序可能有不同的要求。X.509 證書的非 TLS 使用也是如此,例如程式碼簽名。RFC 6125 中有關於 DNS 名稱解釋的指南。
關於字元等方面可接受的規則在定義這些證書的文件中。這是 RFC 5280 用於 Internet 上使用的證書和 X.509 用於所有證書(包括那些在 Internet 上使用的證書)。後者指的是大量文件,例如 X.500、X.501、X.520、X.521 和 X.680。
X.520 第 6 節定義了您可以在主題欄位中使用的許多屬性。這是一本激動人心的睡前讀物,所以如果您不能抽出時間,請堅持使用PrintableString類型的基本字元:
A..Z a..z 0..9 (space)'()+,-./:=?
這在政治上可能不正確,因為不會涵蓋大多數非英語語言。另一種方法是使用包含世界上大多數字元的utf8String類型。