web-dev-qa-db-ja.com

mod_nssとmod_sslの違いは何ですか?

ADドメインでのケルベロス認証に安全な証明書を使用するようにApache Subversionサーバーを設定しています。

以下のssl.conf構成でmod_sslを正常に動作させることができましたが、mod_nssでは正常に動作しません。 mod_nssの場合、私が従った設定は主にこの記事からです https://access.redhat.com/articles/146729 。 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

6
user55570

mod_sslはOpenSSLライブラリを使用してTLSを実装します。 mod_nssは代わりにNSSライブラリを使用します。それらは相互に排他的です。

mod_nssはめったに使用されません。実際、NSSは、元々のMozillaアプリケーション(最近のFirefoxやThunderbirdなど)以外ではほとんど使用されていません。

Mod_nssの使用を強制する非常に具体的で異常な要件がない限り、それを使用する理由はありません。

6

それらは同じように機能し、同様の構成とほぼ同じ機能を備えています。自分に最適な方を使用してください。

Duskwuffが言うように、mod_sslの方がはるかに広く使用されているので、より多くの助けが得られ、他の人があなたの構成を理解しやすくなるでしょう。

個人的には、mod_nssが証明書をより適切に管理する方法が好きです。それらをデータベースファイルに保持し、certutilとpk12utilを使用してそれらを管理します。 certutilを使用すると、証明書チェーンを簡単に表示し、データベース内の証明書から検証できるため、サービスを開始する前にチェーンが有効かどうかを確認できます。 opensslには簡単な方法がありません。

4
Andrew Schulman