簡體   English   中英

如何使用Apache進行客戶端證書身份驗證

[英]How to do client certificate authentication with Apache

問題非常明確,但我沒有在網上找到任何有用的教程。 所以我希望我能在這里運氣好。

基本上,我想用Apache構建客戶端證書身份驗證。 我為我托管的網站配置了Apache的conf文件。 我提出的問題在這里:

SSLVerifyClient require
SSLVerifyDepth 1
SSLCACertificateFile /etc/apache2/ssl/client.crt

但是我不知道如何為客戶端生成證書和密鑰文件。 另外,我應該在Apache服務器配置中的SSLCACertificateFile上放置什么文件?

服務器是否只是將客戶端發送的證書文件與服務器上的證書文件進行比較? 客戶端證書身份驗證究竟在做什么?

您可以在此處找到有關如何創建由此CA證書簽名的CA證書和證書的說明: http//pages.cs.wisc.edu/~zmiller/ca-howto/

事情是這樣的:

  • 您設置了根CA密鑰和證書
  • 客戶端生成他的私鑰和證書請求
  • 他們會向您發送證書申請
  • 使用證書請求,根CA證書和根CA密鑰生成證書
  • 您將證書返回給客戶端

然后,您可以檢查客戶端是否提供了CA“簽名”的證書。

了解SSLVerifyClient和其他指令非常重要。 TLS客戶端證書身份驗證的實際問題 (第3頁):

SSLVerifyClient的默認值沒有不需要CCA; 因此,服務器不會在TLS握手中包含CertificateRequest消息。

require將需要CCA,因此CertificateRequest消息將包含在握手中。 如果客戶端未在客戶端的證書消息中提供任何證書,或者mod_ssl未能驗證提供的證書,則TLS握手將被中止,並且將向客戶端發送致命的TLS警報消息。

可選值與require相同,但可以容忍空客戶端的Certificate消息。

最后一個可能的值optional_no_caoptional是相同的,但是它還允許提交一個客戶端的證書,該證書不會鏈接到服務器信任的CA(因為OpenSSL [ 6 ]中的錯誤尚未生效或過期非 - 也將接受自簽名的客戶證書)。

optional_no_ca可用於在應用程序級別執行證書驗證,或實現使用X.509證書作為公鑰傳輸的無PKI公鑰驗證。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM