AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 1151325
Accepted
Esa Jokinen
Esa Jokinen
Asked: 2024-01-12 01:15:52 +0800 CST2024-01-12 01:15:52 +0800 CST 2024-01-12 01:15:52 +0800 CST

Como obter certificados ECC e RSA do Let's Encrypt for Postfix?

  • 772

Let's Encrypt começou a emitir certificados ECC por padrão desde o Certbot 2.0 . Isso não é um problema para navegadores modernos, mas os certificados Let's Encrypt também podem ser usados ​​para outros fins além de HTTPS. Ou seja, alguns servidores SMTP ainda não suportam certificados ECC. Se esse servidor tentar estabelecer STARTTLSconexão com o Postfix que usa certificados ECC, ele falhará.

Os logs indicam que não há cifra compartilhada, apesar de, por exemplo, o Wireshark mostrar que o Client Hello no handshake TLS possui claramente cifras comuns com a lista configurada via smtpd_tls_mandatory_ciphers = medium.

postfix/smtpd[1337]: connect from mail.example.net[198.51.100.1]
postfix/smtpd[1337]: SSL_accept error from mail.example.net[198.51.100.1]: -1
postfix/smtpd[1337]: warning: TLS library problem: error:0A0000C1:SSL routines::no shared cipher:../ssl/statem/statem_srvr.c:2220:
postfix/smtpd[1337]: lost connection after STARTTLS from mail.example.net[198.51.100.1]
postfix/smtpd[1337]: disconnect from mail.example.net[198.51.100.1] ehlo=1 starttls=0/1 commands=1/2

O problema é causado pelo tipo de certificado. É possível obter certificados ECC e RSA do Let's Encrypt usando Certbot? Como configurar o Postfix para usar os dois ao mesmo tempo?

ssl
  • 1 1 respostas
  • 54 Views

1 respostas

  • Voted
  1. Best Answer
    Esa Jokinen
    2024-01-12T01:15:52+08:002024-01-12T01:15:52+08:00

    Certificado RSA adicional da Let's Encrypt (Certbot)

    Existem algumas respostas com soluções que requerem scripts personalizados. Esta solução depende inteiramente da configuração do Certbot. As seguintes suposições são feitas. Se isso for diferente em sua configuração, altere as instruções de acordo com suas necessidades.

    • Existe um certificado ECC configurado para mail.example.comusá-lo como nome do certificado ( --cert-name); renovação configurada em /etc/letsencrypt/renewal/mail.example.com.confetc.

    • Os padrões do Certbot são configurados por meio do arquivo de configuração /etc/letsencrypt/cli.ini . Este exemplo usa certificados ECC com uma secp384r1curva mais forte (default secp256r1) e tamanho de chave RSA aumentado 4096(default 2048), bem como um autenticador pré-configurado :

      # Because we are using logrotate for greater flexibility, disable the
      # internal certbot logrotation.
      max-log-backups = 0
      
      # Use ECC for the private key
      key-type = ecdsa
      elliptic-curve = secp384r1
      
      # Use a 4096 bit RSA key instead of 2048
      rsa-key-size = 4096
      
      # Use webroot authenticator; common webroot for all sites
      authenticator = webroot
      webroot-path = /var/www/letsencrypt
      

    Você pode replicar o cli.iniarquivo com o tipo de chave RSA usando:

    sed -E 's/key-type.?=.?ecdsa/key-type = rsa/' /etc/letsencrypt/cli.ini \
      | sed 's/^# Use ECC/# Use RSA/' \
      | sudo tee /etc/letsencrypt/cli-rsa.ini
    

    A configuração principal é key-type = rsa. O arquivo é replicado para que isso não altere a configuração padrão de todos os novos certificados. Neste exemplo, o comando cria cli-rsa.initendo:

    # Because we are using logrotate for greater flexibility, disable the
    # internal certbot logrotation.
    max-log-backups = 0
    
    # Use RSA for the private key
    key-type = rsa
    elliptic-curve = secp384r1
    
    # Use a 4096 bit RSA key instead of 2048
    rsa-key-size = 4096
    
    # Use webroot authenticator; common webroot for all sites
    authenticator = webroot
    webroot-path = /var/www/letsencrypt
    

    Você pode usar o arquivo de configuração para solicitar outro certificado para o arquivo mail.example.com. Deve --cert-nameser diferente do certificado ECC, pois estamos solicitando um certificado RSA adicional em vez de substituir o atual. Por exemplo,

    sudo certbot certonly \
      --cert-name mail.example.com-rsa \
      -d mail.example.com \
      -c /etc/letsencrypt/cli-rsa.ini
    

    Se o seu método de renovação estiver configurado corretamente, você deverá obter:

    Requesting a certificate for mail.example.com
    
    Successfully received certificate.
    Certificate is saved at: /etc/letsencrypt/live/mail.example.com-rsa/fullchain.pem
    Key is saved at:         /etc/letsencrypt/live/mail.example.com-rsa/privkey.pem
    

    Você precisará desses caminhos na configuração do Postfix.

    Vários certificados no Postfix

    Com o suporte Postfix TLS você pode configurar vários certificados ao mesmo tempo. Desde o Postfix 3.4 é recomendado usar o smtpd_tls_chain_filesparâmetro (em vez do legado smtpd_tls_cert_file& smtpd_tls_key_filepara RSA & smtpd_tls_eccert_file& smtpd_tls_eckey_filepara ECDSA).

    Vale a pena notar que:

    Você também pode armazenar as chaves separadamente de seus certificados, novamente desde que cada uma esteja listada antes da cadeia de certificados correspondente. Não é recomendado armazenar uma chave e sua cadeia de certificados associada em arquivos separados, pois isso é propenso a condições de corrida durante a substituição de chave, pois não há como atualizar vários arquivos atomicamente.

    No entanto,

    • Certbot armazena a chave e a cadeia em arquivos separados.
    • Você pode configurar --deploy-hookum script que seja executado systemctl reload postfixem uma renovação bem-sucedida.

    Exemplo de configuração para o main.cf; preste atenção na ordem correta: cada chave privada antes de cada cadeia de certificados:

    smtpd_tls_chain_files =
        /etc/letsencrypt/live/mail.example.com/privkey.pem,
        /etc/letsencrypt/live/mail.example.com/fullchain.pem,
        /etc/letsencrypt/live/mail.example.com-rsa/privkey.pem,
        /etc/letsencrypt/live/mail.example.com-rsa/fullchain.pem
    
    • 0

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve