{"id":29550,"date":"2016-05-17T10:23:31","date_gmt":"2016-05-17T10:23:31","guid":{"rendered":"http:\/\/systemadmin.es\/?p=5089"},"modified":"2016-05-17T10:23:31","modified_gmt":"2016-05-17T10:23:31","slug":"mod_nss-instalacion-y-configuracion","status":"publish","type":"post","link":"https:\/\/icloud.pe\/blog\/mod_nss-instalacion-y-configuracion\/","title":{"rendered":"mod_nss: Instalaci\u00f3n y configuraci\u00f3n"},"content":{"rendered":"<p>En algunas algunas distribuciones nos podemos encontrar que <strong>mod_ssl<\/strong> no soporta <strong>TLS 1.2<\/strong>, pero en cambio s\u00ed podremos <strong>instalar mod_nss<\/strong> que s\u00ed lo soporta. Vamos a ver como usar <strong>mod_nss<\/strong><\/p>\n<p><!-- more --><\/p>\n<p>Primero deberemos cargarlo y definir algunas variables globales, por ejemplo en <strong>\/etc\/httpd\/conf.d\/nss.conf<\/strong>:<\/p>\n<pre>\r\nLoadModule nss_module modules\/libmodnss.so\r\n\r\nAddType application\/x-x509-ca-cert .crt\r\nAddType application\/x-pkcs7-crl    .crl\r\n\r\nNSSPassPhraseDialog  builtin\r\n\r\nNSSPassPhraseHelper \/usr\/libexec\/nss_pcache\r\n\r\nNSSSessionCacheSize 10000\r\nNSSSessionCacheTimeout 100\r\nNSSSession3CacheTimeout 86400\r\n\r\n\r\nNSSRandomSeed startup builtin\r\n\r\nNSSRenegotiation off\r\n\r\nNSSRequireSafeNegotiation off\r\n\r\nNSSCipherSuite +rsa_rc4_128_md5,+rsa_rc4_128_sha,+rsa_3des_sha,-rsa_des_sha,-rsa_rc4_40_md5,-rsa_rc2_40_md5,-rsa_null_md5,-rsa_null_sha,+fips_3des_sha,-fips_des_sha,-fortezza,-fortezza_rc4_128_sha,-fortezza_null,-rsa_des_56_sha,-rsa_rc4_56_sha,+rsa_aes_128_sha,+rsa_aes_256_sha\r\n\r\nNSSProtocol TLSv1.0,TLSv1.1,TLSv1.2\r\n\r\n<\/pre>\n<p>A continuaci\u00f3n mediante certutil crearemos la base de datos que contendr\u00e1 los certificados:<\/p>\n<pre>\r\necho \"ejemplopassword\" > \/etc\/httpd\/alias\/pwdfile.txt\r\necho \"internal:ejemplopassword\" > \/etc\/httpd\/alias\/pin.txt\r\ncertutil -N -d \/etc\/httpd\/alias -f \/etc\/httpd\/alias\/pwdfile.txt\r\n<\/pre>\n<p>Para el caso de <strong>CentOS<\/strong>, al instalar mod_nss se generar\u00e1 una base de datos con certificados autofirmados de ejemplo en <strong>\/etc\/httpd\/alias<\/strong><\/p>\n<p>Mediante certutil deberemos generar la clave privada y el CSR que necesitamos para firmar el certificado, por ejemplo:<\/p>\n<pre>\r\n# certutil -R -s 'CN=systemadmin.es, O=systemadmin, OU=modnss, L=Barcelona, ST=Barcelona, C=RC' -o \/etc\/httpd\/ssl\/systemadmin.csr -a -g 2048 -d \/etc\/httpd\/alias -f \/etc\/httpd\/alias\/pwdfile.txt\r\n<\/pre>\n<p>Podemos ver la clave privada generada mediante <strong>certutil -K<\/strong>:<\/p>\n<pre>\r\n# certutil -K -d \/etc\/httpd\/alias\/\r\ncertutil: Checking token \"NSS Certificate DB\" in slot \"NSS User Private Key and Certificate Services\"\r\n&lt; 0> rsa      37d35426e3a54d45c360be5727cc0f93be4dbeb4   NSS Certificate DB:alpha\r\n&lt; 1> rsa      c2fb4ee7ebeedc5a8f0c0cb8d6d2d51581b9ef57   NSS Certificate DB:cacert\r\n&lt; 2> rsa      6c18f8803eb18ad6ad1930c3b4650eb3e8dc5b72   NSS Certificate DB:Server-Cert\r\n&lt; 3> rsa      67c0de3a88a738ffaaf3508d370b528b7976ab0e   NSS Certificate DB:sudosueu\r\n&lt; 4> rsa      7b7276980ef037e4b6b37652a95e16376ea95e29   SelfSignedSP\r\n<strong>&lt; 5> rsa      da7524dee9662362db91ff0b95e77c078e2c4ed5   (orphan)<\/strong>\r\n<\/pre>\n<p>Una vez la entidad certificadora nos devuelva el certificado firmado, deberemos importar primero el <strong>certificado intermedio<\/strong>, si existe. Por ejemplo, para importar el certificado presente en <strong>\/etc\/httpd\/ssl\/systemadmin_intermediate.crt<\/strong> a la <strong>clave GeoTrustGlobalCA<\/strong> har\u00edamos:<\/p>\n<pre>\r\n# certutil -A -n 'geotrust' -t 'CT,,' -d \/etc\/httpd\/alias -f \/etc\/httpd\/alias\/pwdfile.txt -a -i \/etc\/httpd\/ssl\/systemadmin_intermediate.crt\r\n<\/pre>\n<p>Finalmente, <strong>importaremos el certificado firmado<\/strong> mediante el siguiente comando. En este caso suponemos que el certificado esta en <strong>\/etc\/httpd\/ssl\/systemadmin_cert.crt<\/strong> y lo queremos importar con la clave <strong>systemadmin<\/strong>:<\/p>\n<pre>\r\n# certutil -A -n 'systemadmin' -t 'P,,' -d \/etc\/httpd\/alias -f \/etc\/httpd\/alias\/pwdfile.txt -a -i \/etc\/httpd\/ssl\/systemadmin_cert.crt\r\n<\/pre>\n<p>Podemos<strong> verificar la cadena<\/strong> mediante <strong>certutil -O<\/strong>:<\/p>\n<pre>\r\n# certutil -O -n systemadmin -d .\r\n\"GeoTrustGlobalCA\" [CN=GeoTrust DV SSL CA - G3,OU=Domain Validated SSL,O=GeoTrust Inc.,C=US]\r\n\r\n  \"systemadmin\" [CN=www.systemadmin.es]\r\n\r\n<\/pre>\n<p>Si volvemos a listar las claves privadas veremos que ya no se encuentra hu\u00e9rfana:<\/p>\n<pre>\r\n# certutil -K -d .\r\ncertutil: Checking token \"NSS Certificate DB\" in slot \"NSS User Private Key and Certificate Services\"\r\n&lt; 0> rsa      37d35426e3a54d45c360be5727cc0f93be4dbeb4   NSS Certificate DB:alpha\r\n&lt; 1> rsa      c2fb4ee7ebeedc5a8f0c0cb8d6d2d51581b9ef57   NSS Certificate DB:cacert\r\n&lt; 2> rsa      6c18f8803eb18ad6ad1930c3b4650eb3e8dc5b72   NSS Certificate DB:Server-Cert\r\n&lt; 3> rsa      67c0de3a88a738ffaaf3508d370b528b7976ab0e   NSS Certificate DB:sudosueu\r\n&lt; 4> rsa      7b7276980ef037e4b6b37652a95e16376ea95e29   SelfSignedSP\r\n<strong>&lt; 5> rsa      da7524dee9662362db91ff0b95e77c078e2c4ed5   systemadmin<\/strong>\r\n<\/pre>\n<p>Para habilitar el <strong>virtualhost SSL con mod_nss<\/strong>, deberemos a\u00f1adir las siguientes opciones:<\/p>\n<pre>\r\n&lt;VirtualHost *:443>\r\n(...)\r\n  NSSEngine on\r\n\r\n  NSSCipherSuite +rsa_rc4_128_md5,+rsa_rc4_128_sha,+rsa_3des_sha,-rsa_des_sha,-rsa_rc4_40_md5,-rsa_rc2_40_md5,-rsa_null_md5,-rsa_null_sha,+fips_3des_sha,-fips_des_sha,-fortezza,-fortezza_rc4_128_sha,-fortezza_null,-rsa_des_56_sha,-rsa_rc4_56_sha,+rsa_aes_128_sha,+rsa_aes_256_sha\r\n\r\n  NSSProtocol TLSv1.0,TLSv1.1,TLSv1.2\r\n\r\n  NSSNickname systemadmin\r\n\r\n  NSSCertificateDatabase \/etc\/httpd\/alias\r\n(...)\r\n&lt;\/VirtualHost>\r\n<\/pre>\n<p>Simplemente deberemos indicar la clave del certificado a usar mediante NSSNickname, en el caso de ejemplo ser\u00eda <strong>systemadmin<\/strong>.<\/p>\n<p>\tTags: <a href=\"http:\/\/systemadmin.es\/tag\/httpd\" title=\"Apache\" rel=\"tag\">Apache<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>En algunas algunas distribuciones nos podemos encontrar que mod_ssl no soporta TLS 1.2, pero en cambio s&iacute; podremos instalar mod_nss que s&iacute; lo soporta. Vamos a ver como usar mod_nss Primero deberemos cargarlo y definir algunas variables globales, por ejemplo en \/etc\/httpd\/conf.d\/nss.conf: LoadModule nss_module modules\/libmodnss.so AddType application\/x-x509-ca-cert .crt AddType application\/x-pkcs7-crl .crl NSSPassPhraseDialog builtin NSSPassPhraseHelper \/usr\/libexec\/nss_pcache [&hellip;]<\/p>\n","protected":false},"author":321,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2282,5043],"tags":[],"class_list":["post-29550","post","type-post","status-publish","format-standard","hentry","category-apache","category-lamp-y-web"],"_links":{"self":[{"href":"https:\/\/icloud.pe\/blog\/wp-json\/wp\/v2\/posts\/29550","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/icloud.pe\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/icloud.pe\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/icloud.pe\/blog\/wp-json\/wp\/v2\/users\/321"}],"replies":[{"embeddable":true,"href":"https:\/\/icloud.pe\/blog\/wp-json\/wp\/v2\/comments?post=29550"}],"version-history":[{"count":1,"href":"https:\/\/icloud.pe\/blog\/wp-json\/wp\/v2\/posts\/29550\/revisions"}],"predecessor-version":[{"id":29551,"href":"https:\/\/icloud.pe\/blog\/wp-json\/wp\/v2\/posts\/29550\/revisions\/29551"}],"wp:attachment":[{"href":"https:\/\/icloud.pe\/blog\/wp-json\/wp\/v2\/media?parent=29550"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/icloud.pe\/blog\/wp-json\/wp\/v2\/categories?post=29550"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/icloud.pe\/blog\/wp-json\/wp\/v2\/tags?post=29550"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}