Error al usar certificado en Postfix
Hola, he configurado Postfix para que use permita relay desde el exterior
previa autenticación tipo "LOGIN". Me funciona correctamente.
Ahora trato de usar TLS para dicho proceso de autenticación pero me sale un
error que no comprendo.
Si me conecto desde un ordenador remoto con telnet y hago "ehlo mi_maquina"
sale esto:
************************************************************************
ehlo blablabla
250-correo.mi_maquina
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH LOGIN PLAIN
250 8BITMIME
************************************************************************
Entonces hago en el telnet:
STARTTLS
y me sale:
454 TLS not available due to local problem
En /var/log/mail.log me sale este error justo después del comando STARTTLS:
************************************************************************
mi_maquina postfix/smtpd[8479]: initializing the server-side TLS engine
mi_maquina postfix/smtpd[8479]: warning: cannot get private key from
file /etc/postfix/ssl/newreq.pem
mi_maquina postfix/smtpd[8479]: warning: TLS library problem:
8479:error:0906D06C:PEM routines:PEM_read_bio:no start
line:pem_lib.c:637:Expecting: ANY PRIVATE KEY:
mi_maquina postfix/smtpd[8479]: warning: TLS library problem:
8479:error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM
lib:ssl_rsa.c:709:
mi_maquina postfix/smtpd[8479]: cannot load RSA certificate and key data
************************************************************************
Los certificados los hice siguiendo los pasos de un Howto que resumo aquí:
1) Crear una nueva autoridad certificadora: /usr/lib/ssl/misc/CA.pl -newca
2 )Realizar la petición de un certificado: /usr/lib/ssl/misc/CA.pl
-newreq-nodes
3) Firmar el certificado: /usr/lib/ssl/misc/CA.pl -sign
Con la salvedad de que no debemos añadir una palabra de paso al certificado
para que el servidor no se quede bloqueado esperándola al iniciarse. Luego
deberemos copiar tres de los ficheros resultantes del proceso al
subdirectorio /etc/postfix/ssl/:
mkdir /etc/postfix/ssl
cp demoCA/cacert.pem /etc/postfix/ssl/
cp newcert.pem /etc/postfix/ssl/
cp newreq.pem /etc/postfix/ssl/
chown root /etc/postfix/ssl/newreq.pem
chmod 400 /etc/postfix/ssl/newreq.pem
En mi main.cf en lo referente a TLS tengo puesto:
************************************************************************
#Uso de certificados:
smtpd_use_tls = yes
#smtpd_tls_auth_only = yes
smtpd_tls_key_file = /etc/postfix/ssl/newreq.pem
smtpd_tls_cert_file = /etc/postfix/ssl/newcert.pem
smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem
smtpd_tls_loglevel = 3
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
************************************************************************
En fin, que he googleado y lo más reseñable que he encontrado es el código en
C de Postfix que emplea los certificados:
http://42.pl/postfix/postfix-2.2.2/src/tls/tls_certkey.c
Concretamente el error que me sale es aquí:
if (SSL_CTX_use_PrivateKey_file(ctx, key_file, SSL_FILETYPE_PEM) <= 0) {
msg_warn("cannot get private key from file %s", key_file);
tls_print_errors();
return (0);
}
Pero no tengo ni idea de cuál es el error.
En fin, ¿se os ocurre algo?
Reitero que salvo el tema del TLS todo lo demás funciona a la perfección.
Muchas gracias como siempre.
--
que a mí ni me va ni me viene... pero por comentar...
Reply to: