成為我自己的憑證授權單位後無法產生客戶端證書

成為我自己的憑證授權單位後無法產生客戶端證書

成為我自己的證書頒發機構完成以下教學課程後:https://jamielinux.com/docs/openssl-certificate-authority/

我創建了一個根對,創建了一個中間對,並簽署了一個伺服器證書,我將其安裝在魷魚上,如下所示:

http_port 3129 ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/etc/squid3/certs/gatesentry.csr.cert.pem key=/etc/squid3/key/gatesentry.key.pem

魷魚3.conf

Squid 以此啟動得很好。仍然不確定它是否真的有效。

當我嘗試產生客戶端憑證以安裝在將透過代理存取網際網路的瀏覽器中時,我最終出現錯誤:

我根據以下內容生成它“簽署伺服器和客戶端憑證”部分,內容為“建立憑證”

它指出,如果我要建立用於身份驗證的客戶端證書,我需要使用“usr_crt”擴展,因此我運行:

cd /root/ca
openssl ca -config intermediate/openssl.conf \
      -extensions usr_cert -days 375 -notext -md sha256 \
      -in intermediate/csr/gatesentry.csr.pem \
      -out intermediate/certs/client.cert.pem
Using configuration from intermediate/openssl.conf
Enter pass phrase for /root/ca/intermediate/private/intermediate.key.pem:
Check that the request matches the signature
Signature ok
Certificate Details:
        Serial Number: 4097 (0x1001)
        Validity
            Not Before: Jun 22 10:36:44 2016 GMT
            Not After : Jul  2 10:36:44 2017 GMT
        Subject:
            countryName               = US
            stateOrProvinceName       = Pennsylvania
            localityName              = locality
            organizationName          = Parents
            organizationalUnitName    = Security
            commonName                = gatesentry.domain.lan
            emailAddress              = [email protected]
        X509v3 extensions:
            X509v3 Basic Constraints: 
                CA:FALSE
            Netscape Cert Type: 
                SSL Client, S/MIME
            Netscape Comment: 
                OpenSSL Generated Client Certificate
            X509v3 Subject Key Identifier: 
                XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
            X509v3 Authority Key Identifier: 
                keyid:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX

            X509v3 Key Usage: critical
                Digital Signature, Non Repudiation, Key Encipherment
            X509v3 Extended Key Usage: 
                TLS Web Client Authentication, E-mail Protection
Certificate is to be certified until Jul  2 10:36:44 2017 GMT (375 days)
Sign the certificate? [y/n]: y
failed to update database
TXT_DB error number 2

我不明白為什麼當我以 root 身份運行命令時(當然是在另一台機器上)收到 TXT_DB 錯誤號 2 訊息。

根據教程,我應該能夠在此過程中更改通用名稱。

答案1

TXT_DB error number 2表示 DB_ERROR_INDEX_CLASH。

您已嘗試將具有相同索引的憑證提交至 OpenSSL CA 資料庫兩次。

造成這種情況的原因通常是向資料庫提交的憑證包含相同的序號或相同的通用名稱。對於後者,請檢查文件unique_subject中的選項intermediate/openssl.conf,您可以在 中閱讀該選項man ca

用戶端憑證的通用名稱可以是任何內容,例如您的名字。

通用名稱將在文件中指定intermediate/openssl.conf。它可以配置為提示輸入值或從設定檔讀取值。這是由prompt選項控制的,您可以在 中閱讀有關該選項的資訊man req

答案2

根據教程,我應該能夠在此過程中更改通用名稱

教學課程告訴您使用 產生新金鑰,openssl genrsa並使用 新的 CSRopenssl req -new並使用 來從 CSR 建立憑證openssl ca。 (儘管像許多人一樣,它錯誤地表示證書是透過「簽署 CSR」創建的。CA 不會簽署 CSR。CA 簽署證書,這會創建部分基於CSR,但與CSR不同。 /咆哮)

當您產生新的 CSR 時您指定主題名稱,包括但不限於通用名稱,正如其所說,該名稱必須與其上方的 CA 憑證不同,並且應該與其他 EE 憑證不同,以避免混淆。

openssl ca實際上可以覆蓋已頒發證書的主題名稱(整個名稱,而不是單獨的通用名稱),但這將導致同一密鑰的證書具有不同的名稱,這充其量是不必要的混亂並且通常不太安全(儘管您不這樣做)關心那部分,其他人也關心,所以這並不容易)。

在 usr-crt 部分載入擴充功能時出錯
...沒有值... name=email_in_dn
這可能來自上游預設檔...

不直接。openssl ca -config xxx使用 xxx,並且僅使用 xxx 作為其設定檔。如果您的檔案源自上游,則您想要的部分名稱usr_cert顯然是您已經發現的,但您不需要指定 usr_cert,因為它是預設值。有關 email_in_dn 的錯誤訊息僅殘留在錯誤堆疊中,唯一真正的錯誤是usr-crt;一旦你修復了就-noemailDN不需要了,儘管你可能仍然需要它。

這與 subjectNameAlt 有關係嗎?

假設你的意思是unique_subject,不。subjectAltName(not subjectNameAlt) 又稱 SAN 是通用擴展,它指定主題的備用名稱,但unique_subject僅涉及基本Subject欄位而不涉及任何 SAN。

安裝在將透過代理商存取網際網路的瀏覽器中的用戶端證書

需要明確的是,這樣的客戶端憑證僅用於驗證您自己的身份到代理。您無法使用用戶端/瀏覽器中的憑證透過任何 HTTPS MitM 對 Internet 上的某些內容進行驗證,也不能使用您自己核發的用戶端憑證對 Internet 上任何其他人的系統進行驗證。

相關內容