建立客戶端證書

建立客戶端證書

我已從第三方憑證授權單位取得 SSL 憑證。這是一個.cer文件。證書已安裝並在 IIS7 中正常運作。

該憑證將其預期用途顯示為伺服器身份驗證、用戶端身份驗證。

該網站需要透過客戶端憑證進行身份驗證。是不是使用客戶端憑證映射,但只是使用客戶端憑證作為身份驗證的一種措施——如果您有一個,那麼您就已經通過了身份驗證。

  • 如何建立客戶端憑證?
  • CA 是否必須這樣做並涉及另一個 CSR?
  • 我可以用其他工具自己做這件事嗎? (OpenSSL 或其他)
  • 客戶端憑證需要什麼格式?

答案1

IIS(或大多數 HTTPD)中的用戶端憑證驗證有些複雜。您必須將使用者對應到憑證。憑證本身可以由伺服器信任的任何 CA 頒發;你可以設定 AD CS 實例頒發證書,甚至使用本地副本開放式SSL如果您願意,可以建立證書。

有一篇文章是關於IIS.net描述客戶端憑證映射;包含有關啟用它以及以程式設計方式將憑證與使用者關聯的資訊。

編輯:
使用 OpenSSL 頒發客戶端憑證的超短版本。

  1. openssl genrsa -des3 -out my_ca.key 4096
  2. openssl req -new -key my_ca.key -out my_ca.csr
  3. openssl x509 -req -days 365 -in my_ca.csr -signkey my_ca.key -out my_ca.crt
    您現在擁有 CA 憑證和金鑰。
  4. 對於您將產生的每個用戶端證書,您都需要一個證書簽署請求。如果需要,您可以為每個使用者使用相同的證書,但這不是一個特別好的主意,而且您肯定還應該需要某種其他形式的身份驗證(例如密碼)。客戶端可以自行產生 CSR,或再次使用 openssl 產生 CSR(請注意,每個 CSR 首先需要一個私鑰):
    openssl genrsa -des3 -out client1.key 1024
    openssl req -new -key client1.key -out client1.csr
  5. 編輯 openssl.cnf 檔案並填寫相關的 CA 部分。他們是:

    [ ca ]
    default_ca      = CA_default            # The default ca section
    
    [ CA_default ]
    dir            = ./                    # top dir
    database       = $dir/my_ca.index      # index file.
    new_certs_dir  = $dir/newcerts         # new certs dir
    certificate    = $dir/my_ca.crt        # The CA cert
    serial         = $dir/my_ca.srl        # serial no file
    private_key    = $dir/my_ca.key        # CA private key
    RANDFILE       = $dir/rand             # random number file
    default_days   = 365                   # how long to certify for
    default_crl_days= 30                   # how long before next CRL
    default_md     = md5                   # md to use
    policy         = policy_any            # default policy
    email_in_dn    = no                    # Don't add the email into cert DN
    name_opt       = ca_default            # Subject name display option
    cert_opt       = ca_default            # Certificate display option
    copy_extensions = none                 # Don't copy extensions from request
    
    [ policy_any ]
    countryName            = supplied
    stateOrProvinceName    = optional
    organizationName       = optional
    organizationalUnitName = optional
    commonName             = supplied
    emailAddress           = optional
    
  6. 使用 CA 憑證簽署金鑰
    openssl ca -in client1.csr -out client1.crt

  7. 如果您為用戶端建立了金鑰和 CSR,則需要匯出它們。將證書對匯出到 PKCS12 文件,以便客戶端可以匯入它。
    openssl pkcs12 -export -in client1.crt -inkey client1.key -out client1.p12
  8. 如果您完成了#7,請將您建立的 PKCS12 檔案傳送給客戶端;否則向他們發送#6 的憑證。

請注意,這是頒發簽名證書的糟糕方法,因為它只是授予 CSR 指定的任何類型的證書。一定要注意你正在做的事情。如果您要頒發大量證書,則需要投入一些時間進行更安全的設定。

相關內容