Apache-2.4

通過 engine_pkcs11 和 OpenSSL 將 Apache 與 PKCS#11 設備集成

  • June 13, 2021

我對使用 SSLCryptoDevice 指令的 mod_ssl 有問題。當我執行命令“openssl engine”返回所有可用引擎,包括 pkcs11(libengine-pkcs11-openssl),但是當我在 mod_ssl 配置中設置 SSLCryptoDevice pkcs11 並嘗試啟動 Apache 時,返回錯誤“SSLCryptoDevice:無效參數;必須是其中之一:" 但現在沒有列出引擎 pkcs11。在 openssl 中執行良好。

一些系統資訊:Debian 8 x64、OpenSSL 1.0.1k、Apache 2.4.10

Apache 啟動錯誤: http: //pastebin.com/b4GLaSHL

OpenSSL 引擎: http: //pastebin.com/kXNYG2Yw

PKCS#11支持不是原生的mod_ssl。看:

https://bz.apache.org/bugzilla/show_bug.cgi?id=42687

https://bz.apache.org/bugzilla/show_bug.cgi?id=42688

https://bz.apache.org/bugzilla/show_bug.cgi?id=52473

您可以嘗試應用此更新檔,但這些適合生產使用。

另一種選擇是使用mod_nss

mod_nss使用 NSS 作為加密庫而不是 OpenSSL 並支持 PKCS#11.

從 v2.4.42 開始,mod_ssl 支持 PKCS11。

作為將證書和私鑰儲存在文件中的替代方法,證書標識符可用於標識儲存在令牌中的證書。目前,只有 PKCS#11 URI 被辨識為證書標識符,並且可以與 OpenSSL pkcs11 引擎結合使用。如果省略 SSLCertificateKeyFile,則可以通過 SSLCertificateFile 指定的單個標識符載入證書和私鑰。

來自http://httpd.apache.org/docs/2.4/mod/mod_ssl.html#sslcertificatefile的範例

# Example use of a certificate and private key from a PKCS#11 token:
SSLCertificateFile "pkcs11:token=My%20Token%20Name;id=45"

引用自:https://serverfault.com/questions/711580