mod_nss 和 mod_ssl 有什麼區別?
我正在設置一個 apache 顛覆伺服器,以使用安全證書對 AD 域進行 kerberos 身份驗證。
我已經成功地將它與下面的 ssl.conf 配置的 mod_ssl 一起使用,但不適用於 mod_nss。對於 mod_nss,我遵循的配置主要來自這篇文章:https ://access.redhat.com/articles/1467293 。如果 mod_nss 的連結無法訪問,我也在下麵包含了顯著的 mod_nss conf 行。
所以,只是想知道是否有任何使用 mod_ssl 和 mod_nss 的指南/優點/缺點。如果我能理解 mod_nss 出了什麼問題,那就太好了。我在客戶端收到協議錯誤。
ssl.conf:
LoadModule ssl_module modules/mod_ssl.so Listen 443 SSLPassPhraseDialog builtin SSLSessionCache shmcb:/var/cache/mod_ssl/scache(512000) SSLSessionCacheTimeout 300 SSLMutex default SSLRandomSeed startup file:/dev/urandom 256 SSLRandomSeed connect builtin SSLCryptoDevice builtin <VirtualHost _default_:443> ErrorLog logs/svn_ssl_error_log TransferLog logs/svn_ssl_access_log LogLevel debug SSLEngine on SSLProtocol TLSv1.1 TLSv1.2 SSLCipherSuite DEFAULT:!EXP:!SSLv2:!DES:!IDEA:!SEED:+3DES SSLCertificateFile /etc/pki/tls/certs/localhost.crt SSLCertificateKeyFile /etc/pki/tls/private/localhost.key <Location /App_User> DAV svn SVNPath "/opt/user/App_User" AuthType Kerberos AuthName Kerberos KrbMethodNegotiate Off KrbMethodK5Passwd On KrbServiceName Any KrbAuthRealms SRV01.COMPANY.COM KrbSaveCredentials on KrbLocalUserMapping on KrbVerifyKDC Off AuthzSVNAccessFile /opt/user/access.txt require valid-user </Location> <Files ~ "\.(cgi|shtml|phtml|php3?)$"> SSLOptions +StdEnvVars </Files> <Directory "/var/www/cgi-bin"> SSLOptions +StdEnvVars </Directory> SetEnvIf User-Agent ".*MSIE.*" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 CustomLog logs/ssl_request_log \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" </VirtualHost>
nss.conf:
NSSEngine on NSSPassPhraseDialog file:/etc/httpd/alias/pin.txt NSSProtocol TLSv1.0,TLSv1.1,TLSv1.2 NSSCipherSuite +ecdh_ecdsa_aes_128_sha,+ecdh_ecdsa_aes_256_sha,+ecdhe_ecdsa_aes_128_gcm_sha_256,+ecdhe_ecdsa_aes_128_sha,+ecdhe_ecdsa_aes_128_sha_256,+ecdhe_ecdsa_aes_256_gcm_sha_384,+ecdhe_ecdsa_aes_256_sha,+ecdhe_ecdsa_aes_256_sha_384,+ecdhe_rsa_aes_128_gcm_sha_256,+ecdhe_rsa_aes_128_sha,+ecdhe_rsa_aes_128_sha_256,+ecdhe_rsa_aes_256_gcm_sha_384,+ecdhe_rsa_aes_256_sha,+ecdhe_rsa_aes_256_sha_384,+ecdh_rsa_aes_128_sha,+ecdh_rsa_aes_256_sha,+rsa_aes_128_gcm_sha_256,+rsa_aes_128_sha,+rsa_aes_256_gcm_sha_384,+rsa_aes_256_sha, NSSCertificateDatabase /etc/httpd/alias # The name needs to match the name in the db NSSNickname rhel7-64.example.com NSSProtocol TLSv1.0,TLSv1.1,TLSv1.2 NSSCipherSuite +ecdh_ecdsa_aes_128_sha,+ecdh_ecdsa_aes_256_sha,+ecdhe_ecdsa_aes_128_gcm_sha_256,+ecdhe_ecdsa_aes_128_sha,+ecdhe_ecdsa_aes_128_sha_256,+ecdhe_ecdsa_aes_256_gcm_sha_384,+ecdhe_ecdsa_aes_256_sha,+ecdhe_ecdsa_aes_256_sha_384,+ecdhe_rsa_aes_128_gcm_sha_256,+ecdhe_rsa_aes_128_sha,+ecdhe_rsa_aes_128_sha_256,+ecdhe_rsa_aes_256_gcm_sha_384,+ecdhe_rsa_aes_256_sha,+ecdhe_rsa_aes_256_sha_384,+ecdh_rsa_aes_128_sha,+ecdh_rsa_aes_256_sha,+rsa_aes_128_gcm_sha_256,+rsa_aes_128_sha,+rsa_aes_256_gcm_sha_384,+rsa_aes_256_sha,+rsa_rc4_128_sha NSSCertificateDatabase /etc/httpd/alias
我正在執行 Apache 版本:Redhat 6.9 上的 Apache/2.2.15
mod_ssl 使用 OpenSSL 庫來實現 TLS;mod_nss 改為使用 NSS 庫。它們是相互排斥的。
mod_nss 很少使用。事實上,NSS 幾乎沒有在任何地方使用,除了它起源的 Mozilla 應用程序(如現在的 Firefox 和 Thunderbird)。
除非您有非常具體和不尋常的要求強制使用 mod_nss,否則沒有理由使用它。
它們是工作相似的,具有相似的配置和幾乎相同的功能。使用最適合您的。
正如duskwuff 所說,mod_ssl 使用更廣泛,因此您會找到更多幫助,其他人可能更容易理解您的配置。
我個人喜歡 mod_nss 更好地管理證書的方式。它將它們保存在數據庫文件中,並使用 certutil 和 pk12util 來管理它們。certutil 可以輕鬆地向您顯示證書鏈並從數據庫中的證書對其進行驗證,因此您可以在啟動服務之前知道該鍊是否有效。Openssl 仍然沒有任何簡單的方法可以做到這一點。