En Ubuntu, parece que el mejor lugar para una clave privada utilizada para firmar un certificado (para uso de nginx) es /etc/ssl/private/
Esta respuesta agrega que el certificado debe entrar /etc/ssl/certs/
pero que parece un lugar inseguro. ¿Los .crt
archivos deben mantenerse seguros o se consideran públicos?
ssl
ssl-certificate
openssl
Adam Nelson
fuente
fuente
.crt
en una valla publicitaria de Times Square.Respuestas:
El archivo .crt se envía a todo lo que se conecta; Es público. (
chown root:root
ychmod 644
)Para agregar a la ubicación de clave privada; asegúrese de asegurarlo correctamente y de tenerlo allí. (
chown root:ssl-cert
ychmod 640
)fuente
ssl-cert
, usado, quizás entre otras cosas, para crear certificadosRealmente no importa dónde los coloque siempre que proteja adecuadamente sus archivos de clave privada . El certificado público es público; no se necesita protección - privilegios del servidor o de otra manera
Para ampliar la respuesta, no uso la ubicación predeterminada
/etc/ssl
.Es más fácil para mí mantener todas las minas en un área separada debido a las copias de seguridad + otras razones.
Para Apache SSL, mantengo el mío en
/etc/apache2/ssl/private
"área raíz" similar/etc/
.Configuración de ejemplo
Esta publicación está orientada a Ubuntu (Debian) + Apache, pero debería funcionar en la mayoría de los sistemas:
solo aplique los permisos y actualice la ubicación / ruta en la configuración dada (apache / nginx / etc.).
Si los archivos de clave SSL están protegidos correctamente (directorio y archivos), estará bien. Tenga en cuenta las notas!
Crear directorios:
Nota:
chmod 710
admitessl-cert
grupo bajo Ubuntu. (Ver comentarios)Ajuste de permiso para
700
el/etc/apache2/ssl/private
también funcionará bien.Colocar archivos SSL:
Propietario del set:
Nota:
Si no tiene el grupo ssl-cert , simplemente use 'root: root' en la línea de arriba u omita la segunda línea.
Establecer permisos:
Certificado (s) Público (s)
Clave privada (s)
Nota:
El permiso de grupo está establecido en READ (640) debido al grupo ssl-cert de Ubuntu. '600' también está bien.
Habilite el módulo Apache SSL
Edite los archivos del sitio Apache y habilite
(ver último párrafo) *
Reiniciar el servicio Apache2
o
Hecho. Prueba tu nuevo sitio SSL.
* Nuevamente, esto va más allá de la pregunta, pero puede copiar el archivo de configuración predeterminado del sitio Apache SSL (
sudo cp /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-available/mysiteexample-ssl.conf
) como un buen punto de partida / ejemplo de directivas / directorios predeterminados que normalmente se usan bajo un simple archivo 'conf' de Apache / SSL (Ubuntu / Debian) . Normalmente apunta a un certificado SSL autofirmado + clave (snakeoil), paquetes CA, así como directivas comunes utilizadas para un sitio SSL dado.Después de copiar, simplemente edite el nuevo archivo .conf y agréguelo / elimínelo / actualícelo según sea necesario con la nueva información / rutas anteriores y luego ejecútelo
sudo a2ensite mysiteexample-ssl
para habilitarlo.fuente
<VirtualHost *:443>
secciónsites-available/mysite.conf
debe incluir los certificados de la siguiente manera:SSLEngine on
SSLCertificateFile /etc/apache2/ssl/mysite.crt
SSLCertificateKeyFile /etc/apache2/ssl/private/mysite.key
Todas las respuestas aquí parecen estar bien, pero quiero mencionar una cosa que encontré que es un problema ... Si tiene que concatenar su certificado con intermedios o raíces para obtener un archivo en cadena, no lo ponga
/etc/ssl/certs
, porque cuandoc_rehash
se ejecuta, puede crear enlaces simbólicos hash a sus certificados debido a las raíces o intermedios dentro de ellos.Luego, más adelante, si sus certificados han caducado y los elimina, y no sabe volver a ejecutarlos
c_rehash
, es posible que haya roto los enlaces simbólicos en su/etc/ssl/certs
directorio, y cosas extrañas comienzan a suceder cuando su máquina local intenta conectarse a sí misma a través de SSL, y no puede encontrar las raíces para validar. Por ejemplo, con curl de repente comencé a obtener:Poco después de limpiar algunos viejos archivos .crt y .pem concatenados que tenía
/etc/ssl/certs
.Almacenar al menos sus cadenas en otro lugar evita este problema. Terminé haciendo un
/etc/ssl/local_certs
para mantener mis certificados y cadenas, para que no se perdieran en el desastre de los certificados de CA que encontrarás en/etc/ssl/certs
fuente
Realmente no hay un lugar inseguro si el permiso para los archivos / directorios individuales está configurado en algo así
chown root :0 private.key
ychmod 600 private.key
solo la raíz puede leerlo. Las CSR y los archivos de certificado son menos confidenciales como usted dice.Con esos permisos, las rutas que menciona y / usr / local / ssl deberían estar bien.
fuente
Las ubicaciones son correctas:
/etc/ssl/certs/
para.crt
archivo/etc/ssl/private
para.key
archivoEl propietario debe ser
root:root
para ambos (usesudo chmod root:root <file>
para cambiar si es necesario).Permisos :
644
para.crt
archivo600
para.key
archivoEsto funcionará para
nginx
.fuente