Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2023-02-16 09:19:04

  DeWu - Użytkownik

DeWu
Użytkownik
Zarejestrowany: 2013-03-26

Self signed cert dla dovecot i Roundcube

Hej. Czy ktoś mógłby mnie przeprowadzić przez proces instaalacji certyfikatu SSL dla Dovecota i postfixa tak, żeby Roundcube mógł z n iego skorzystać?

Instalowałem cały system pocztowy zgodnie z tym:
https://www.linode.com/docs/guides/email-with-postf … uring-dovecot

Wygenerowałem certyfikaty komendą:
dovecot-mkcert

Wcześniej ściągnąłem ten plik ręcznie do /usr/local/bin/dovecot-mkcert bo nie było w paczce

Kod:

cat /usr/local/bin/dovecot-mkcert
#!/bin/sh

# Generates a self-signed certificate.
# Edit dovecot-openssl.cnf before running this.

umask 077
OPENSSL=${OPENSSL-openssl}
SSLDIR=${SSLDIR-/etc/ssl}
OPENSSLCONFIG=/etc/ssl/dovecot-openssl.cnf

CERTDIR=$SSLDIR/certs
KEYDIR=$SSLDIR/private

CERTFILE=$CERTDIR/dovecot.pem
KEYFILE=$KEYDIR/dovecot.pem

if [ ! -d $CERTDIR ]; then
  echo "$SSLDIR/certs directory doesn't exist"
  exit 1
fi

if [ ! -d $KEYDIR ]; then
  echo "$SSLDIR/private directory doesn't exist"
  exit 1
fi

if [ -f $CERTFILE ]; then
  echo "$CERTFILE already exists, won't overwrite"
  exit 1
fi

if [ -f $KEYFILE ]; then
  echo "$KEYFILE already exists, won't overwrite"
  exit 1
fi

openssl req -new -x509 -nodes -config $OPENSSLCONFIG -out $CERTFILE -keyout $KEYFILE -days 3650 || exit 2
chmod 0600 $KEYFILE
echo 
openssl x509 -subject -fingerprint -noout -in $CERTFILE || exit 2

Kod:

cat /etc/ssl/dovecot-openssl.cnf
[ req ]
default_bits = 2048
encrypt_key = yes
distinguished_name = req_dn
x509_extensions = cert_type
prompt = no

[ req_dn ]
# country (2 letter code)
C=PL

# State or Province Name (full name)
#ST=

# Locality Name (eg. city)
L=Miejscowość

# Organization (eg. company)
O=Firma

# Organizational Unit Name (eg. section)
OU=IMAP server

# Common Name (*.example.com is also possible)
CN=poczta.firma.pl

# E-mail contact
emailAddress=postmaster@firma.pl

[ cert_type ]
nsCertType = server[/cat]

Przeczytałam, że trzeba zrobić jeszcze coś takiego:
openssl dhparam -out /etc/dovecot/dh.pem 4096

Próba logowania do roundcube skutkowała błędem. W config/config.inc.php dodałem coś takiego:

Kod:

$config['default_host'] = 'ssl://poczta.firma.pl'; //your imap server address

Pogooglowałem, doszedłęm dotego i dodałem:

Kod:

$config['imap_conn_options'] = array(
        'ssl' => array(
            'verify_peer'       => true,
            'allow_self_signed' => true,
            'peer_name'         => 'poczta.firma.pl',
            'ciphers'           => 'TLSv1+HIGH:!aNull:@STRENGTH',
            'cafile'            => '/etc/ssl/certs/dovecot.pem',
        ),
    );

$config['smtp_conn_options'] = array(
        'ssl' => array(
            'verify_peer'       => true,
            'allow_self_signed' => true,
            'peer_name'         => 'poczta.firma.pl',
            'ciphers'           => 'TLSv1+HIGH:!aNull:@STRENGTH',
            'cafile'            => '/etc/ssl/certs/dovecot.pem',
        ),
    );

Dodałem też w konfiguracji PHP w dyrektywnie [openssl] i [curl] ścieżki do certyfikatów jednak wciąż nie mogę się zalogować. Co robię źle?

Offline

 

#2  2023-02-17 05:10:50

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: Self signed cert dla dovecot i Roundcube

Dodaj lokalny CA do /etc/ssl/certs/ca-certificates.crt w następujący sposób:

Kod:

mkdir -p /usr/local/share/ca-certificates/

skopuj swój lokalny CA do tego folderu.
potem z roota

Kod:

update-ca-certificates

wtedy system doda lokalny CA z /usr/local/share/ca-certificates/
do certów systemowych i PHP będzie go traktował jako systemowy.

To chyba najprostsza droga.

Przy czym do dovecota musisz zrobić cert CA i cert serwera, a potem podpisać cert serwera certyfikatem CA.
to CA, nie cert serwera dodajesz do /usr/share/ca-certificates/.

Czyli pokrótce lokalne CA cię czeka.
TU masz opis w starocerkiewnopolskim:
https://morfikov.github.io/post/generowanie-certyfikatow/
xD

Inna wyjście to np Lets'encrypt na poczta.firma.pl i Roundcube go łyknie jako zaufany prawidłowy cert.

Przy okazji wystawisz Rounducbe na certcie lets'encrypt w necie i przeglądarki z Korei PN nie będą się pluły o nieprawidłowy cert.
:P

Ostatnio edytowany przez Jacekalex (2023-02-17 05:16:15)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#3  2023-02-17 09:33:47

  DeWu - Użytkownik

DeWu
Użytkownik
Zarejestrowany: 2013-03-26

Re: Self signed cert dla dovecot i Roundcube

Wygenerowałem certyfikaty zgodnie z poradnikeim. Dodałem lokalny CA do systemowych. Zupdatowałem konfigurację postfixa i dovecota:

Kod:

grep ssl /etc/dovecot/conf.d/10-ssl.conf
ssl = required
# certificate, just make sure to update the domains in dovecot-openssl.cnf
ssl_cert = </etc/CA/signed_certs/2E93F63A34EC6668DBE682DFA9FFB2CD02E7DAAE.pem
ssl_key = </etc/CA/server_key.pem
# root owned 0600 file by using ssl_key_password = <path.
#ssl_key_password =
# ssl_verify_client_cert=yes. The file should contain the CA certificate(s)
# followed by the matching CRL(s). (e.g. ssl_ca = </etc/ssl/certs/ca.pem)
#ssl_ca = 
#ssl_require_crl = yes
# submission service). The directory is usually /etc/ssl/certs in
# RedHat-based systems. Note that ssl_client_ca_file isn't recommended with
#ssl_client_ca_dir =
ssl_client_ca_dir = /etc/ssl/certs
#ssl_client_ca_file =
#ssl_client_require_valid_cert = yes
# auth_ssl_require_client_cert=yes in auth section.
#ssl_verify_client_cert = no
# auth_ssl_username_from_cert=yes.
#ssl_cert_username_field = commonName
# Generate new params with `openssl dhparam -out /etc/dovecot/dh.pem 4096`
# Or migrate from old ssl-parameters.dat file with the command dovecot
# gives on startup when ssl_dh is unset.
ssl_dh = </etc/dovecot/dh.pem
#ssl_min_protocol = TLSv1
#ssl_cipher_list = ALL:!kRSA:!SRP:!kDHd:!DSS:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!PSK:!RC4:!ADH:!LOW@STRENGTH
#ssl_cipher_list = ALL:!DH:!kRSA:!SRP:!kDHd:!DSS:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!PSK:!RC4:!ADH:!LOW@STRENGTH
#ssl_curve_list =
#ssl_prefer_server_ciphers = no
# SSL crypto device to use, for valid values run "openssl engine"
#ssl_crypto_device =
#ssl_options =

Kod:

grep tls /etc/postfix/main.cf
smtpd_tls_cert_file=/etc/CA/server_key.pem
smtpd_tls_key_file=/etc/CA/signed_certs/2E93F63A34EC6668DBE682DFA9FFB2CD02E7DAAE.pem
smtpd_tls_security_level=may
smtp_tls_CApath=/etc/ssl/certs
smtp_tls_security_level=may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

Po restarcie mam w sysylogu:

Kod:

warning: Wrapper-mode request dropped from unknown[46.148.40.151] for service smtps. TLS context initialization failed. For details see earlier warnings in your logs.

Swoich prób logowania do RoundCube w ogóle nie widzę.

Nad użyciem let's encrypt też myślałem tylko co z rekordem DKIM w domenie? Jak dobrze patrzę na przykładzie innejdomeny, gdzie ruch WWW szyfruję za pomocą certa z letsencrypt, odnawia się on co 2 miesiące (/etc/letsencrypt/archive/innadomena.pl/) Czy dobrze rozumiem, że musiałbym co dwa miesiące updatować rekord TXT domeny z kluczem publicznym? DNSa mam na Cloudflare.

Ostatnio edytowany przez DeWu (2023-02-17 09:34:37)

Offline

 

#4  2023-02-17 11:02:18

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: Self signed cert dla dovecot i Roundcube

Co ma piernik do wiatraka a DKIM do certu SSL?
To dwie rożne metody i dwa różne mechanizmy, w dodatku każdy robi co innego.

RTFW (znajdź różnicę :P):
https://pl.wikipedia.org/wiki/DomainKeys_Identified_Mail
https://pl.wikipedia.org/wiki/Transport_Layer_Security

Ostatnio edytowany przez Jacekalex (2023-02-17 11:03:52)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#5  2023-02-17 12:07:40

  DeWu - Użytkownik

DeWu
Użytkownik
Zarejestrowany: 2013-03-26

Re: Self signed cert dla dovecot i Roundcube

A ten certyfikat który tu się generuje i potem umieszcza w rekordzie DNS domeny. Gdzie go się umieszcza (na dysku serwera) i w których configach (postfix, dovecot) wykorzystuje?

Offline

 

#6  2023-07-15 10:30:49

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: Self signed cert dla dovecot i Roundcube

DeWu napisał(-a):

A ten certyfikat który tu się generuje i potem umieszcza w rekordzie DNS domeny. Gdzie go się umieszcza (na dysku serwera) i w których configach (postfix, dovecot) wykorzystuje?

To masz cały opis:
http://opendkim.org/docs.html

Tu masz, jak generować klucze poleceniem konsoli:
http://opendkim.org/opendkim-genkey.8.html

I Dovecot nie ma z nim nic wspólnego, działa jako zewn filtr (milter) dla Postfixa.

Tutaj masz opis na wiki Debiana:
https://wiki.debian.org/opendkim

Przy okazji wciągnie w zależnościach Unbounda a Bind wyleci w kosmos, na to się przygotuj.

Ostatnio edytowany przez Jacekalex (2023-07-15 10:33:51)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
To nie jest tylko forum, to nasza mała ojczyzna ;-)