HPC.ru lite - Все форумы
Форум: КПК и смартфоны на Linux: Zaurus, планшеты Nokia, прочее
Тема: For [Tips]. Почта по stunnel SSL с сертификатом PKCS12

[Ответить]
romale [16.04.2006 14:47] For [Tips]. Почта по stunnel SSL с сертификатом PKCS12:
1. содержимое /etc/inetd.conf:
--- cuted ---
# stunnel to Office
10993 stream tcp nowait root /usr/sbin/tcpd /usr/sbin/stunnel /etc/stunnel/pop.myoffice.ru.conf
10465 stream tcp nowait root /usr/sbin/tcpd /usr/sbin/stunnel /etc/stunnel/smtp.myoffice.ru.conf

где:
10993 - локальный порт куда будет стучаться почтовый клиент, QTmail например (в настройках писАть Incoming Server: localhost, Port: 10993)
10465 - локальный порт куда будет стучаться почтовый клиент, QTmail например (в настройках писАть Outgoing Server: localhost, Port: 10465)

# stunnel to gmail.com
10995 stream tcp nowait root /usr/sbin/tcpd /usr/sbin/stunnel /etc/stunnel/pop3.gmail.com.conf
10587 stream tcp nowait root /usr/sbin/tcpd /usr/sbin/stunnel /etc/stunnel/smtp.gmail.com.conf
--- cuted ---

2. Грабля получилась с сертификатом, у нас выдается в pkcs12, который stunnel не поддерживает
и нужно конвертировать в pem. Делаем:

2.1 openssl pkcs12 -in myPKCS12cert.p12 -out myPEMcert.pem
Enter Import Password: вводим какой-то свой пароль
MAC verified OK
Enter PEM pass phrase: вводим например 1234
Verifying - Enter PEM pass phrase: повторяем 1234

Если не хотим чтобы SSL нас постоянно спрашивал Enter PEM pass phrase (а с запросом у нас не получится соединиться через inetd с Office сервером. Www.gmail.com такая беда не касается - будет нормально работать), то удалим этот PEM pass из RSA ключа:
(без PEM пароля сертификат стОит держать в надежном месте)

2.1.1 openssl rsa -in myPEMcert.pem -out myPEMcert-newrsa.pem
2.1.2 копируем содержимое myPEMcert-newrsa.pem в буфер обмена
2.1.3 открываем myPEMcert.pem и заменяем буфером строки с:

-----BEGIN RSA PRIVATE KEY-----

по:

-----END RSA PRIVATE KEY-----

(хотя может и можно при конвертировании указать в openssl параметром не генерировать PEM pass phrase, но на сегодня я не знаю как)

готово, но тут самое интересное, с которым я с коллегой и парился.

открываем редактором myPEMcert.pem и видим:

2.2 содержимое myPEMcert.pem:
Bag Attributes
friendlyName: Наше имя скорей всего
localKeyID: ляляля
Key Attributes: <No Attributes>
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,хххххх

nJhMgFp75bo+k6cDs9sbqbTmOA7h8pf+oohXcw23kmGfUVpWfPNyJlHsR2GDuLMp
ztZ9Q9pkYQ+sijlQ9+nuTu0A2iNBeFZICBGamdl2yPQi6ksPVAJwyl/oXdjdM1zS
0M8OBieGnQXC46zM8p/tgjO3ut74d5o835j+/qfkclLofhQ/txwMjp7n3eZaiUVE
ZrFWSD1mGuj9aM1Vy+S4XZJl3aGPNispSXDVam3Nxa92SGQdeIFvjInFWn/47lCw
xWDvt/X6DD+asOgKu7GjXtgbcGMYQKj7XwTT7HpgZXHSrWRkqtfgWX6mjsYSy/HP
ywXSJb2IkNH8+9l4OJ9q/o6ZBhjNk3r5rlq3VA2fmNGmawus+ulOZoFyz2qvTMIa
Z6fCetu/MIUL9A1j2szo7zJcQw2J8Lky2yJnOky7OoJKNFNHQGux2nDsujfMU3yO
-----END RSA PRIVATE KEY-----
Bag Attributes
friendlyName: Имя нашей компании
subject=ффвфвфывфывфвфы
issuer=ыфывфывфывфывфыв
-----BEGIN CERTIFICATE-----
BgNVBAoTBG90OTgxGTAXBgNVBAMTEE9wZW5UZWNobm9sb2dpZXMwggEiMA0GCSqG
SIb3DQEBAQUAA4IBDwAwggEKAoIBAQC70mCw7yLCilyM3Cubtni/I4FcMPoVi8fa
yT6boWr2zGDPiHeDKKC0qzF0wffE7sMstDXerIEjK76wvnNbzepDZG8PFPwS3x/L
+fcqnC2odeABLg957UMgLewasuDnj+tFxgWKKbt+CJBGqCqBAjj6x7J611oQKJII
IaxXtMkcFWjuZAYJ/6KGyWTY8NbFxT8nAu2I2i/AZwGboBJNcC2MMEWMwElU8msN
VH3rWi957Z0boJOD4/djbuNx/dwXOXTTMhB+H6CBUzNbV9m1zyc8SdVIFSEOegyW
c6JfMj7qpcJvPivEMxhYqkUaYKzJiIl4iHG1GlWC5ptEJdAbsCOVAgMBAAGjIzAh
MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBBAUA
A4IBAQBLmh+50cWWeiiyT0IeBWi8/+GtlUBxYHUyGk2KR9T1QBbuZzB1P7qrEoI2
-----END CERTIFICATE-----
Bag Attributes
friendlyName: Наше имя скорей всего
localKeyID: ляляля
subject=йцуйцуйцуйцуйцу
issuer=йцуйцуйцуйцу
-----BEGIN CERTIFICATE-----
L90bf1Z2P0L2tu7+OhU/ODNRsb8T4s/TDbxUXuBJKb/EFQepg8gI1CEz6AyhjGO0
84gJ47ZIAMSNpTeqi6gXJ1b1pHxRNLe+q6BsElQB3QhmZzFW9MXfAqizQp7H9+yd
Ohg6NOry4jJ8op8uNWvboeHGPOf1zq8nR8GDQdatXJ2LIJ2a7hINvt1SrefFI/B8
EcDMYpAW61K0rqbg5vg/SbzbOII+wAu3TCL6NrAfh3vS+mzwhtUcx2GzsjTVc9Un
HCntukua8pcuFlFamxzUk/+rr2XoLI0CAwEAAaOBrTCBqjAOBgNVHQ8BAf8EBAMC
BLAwMQYDVR0lBCowKAYIKwYBBQUHAwEGCCsGAQUFBwMCBggrBgEFBQcDAwYIKwYB
BQUHAwQwZQYDVR0fBF4wXDBaoFigVoZUbGRhcDovL2NsaW8ub3QucnUvQ049T3Bl
-----END CERTIFICATE-----

2.3 Берем ножницы и вырезаем от:

Bag Attributes
friendlyName: Имя нашей компании
subject=ффвфвфывфывфвфы

и до первого (включительно) -----END CERTIFICATE-----

короче говоря, средний блок.

так что конечный результат будет выглядеть:

2.4 содержимое myPEMcert.pem:
Bag Attributes
friendlyName: Наше имя скорей всего
localKeyID: ляляля
Key Attributes: <No Attributes>
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,хххххх

nJhMgFp75bo+k6cDs9sbqbTmOA7h8pf+oohXcw23kmGfUVpWfPNyJlHsR2GDuLMp
ztZ9Q9pkYQ+sijlQ9+nuTu0A2iNBeFZICBGamdl2yPQi6ksPVAJwyl/oXdjdM1zS
0M8OBieGnQXC46zM8p/tgjO3ut74d5o835j+/qfkclLofhQ/txwMjp7n3eZaiUVE
ZrFWSD1mGuj9aM1Vy+S4XZJl3aGPNispSXDVam3Nxa92SGQdeIFvjInFWn/47lCw
xWDvt/X6DD+asOgKu7GjXtgbcGMYQKj7XwTT7HpgZXHSrWRkqtfgWX6mjsYSy/HP
ywXSJb2IkNH8+9l4OJ9q/o6ZBhjNk3r5rlq3VA2fmNGmawus+ulOZoFyz2qvTMIa
Z6fCetu/MIUL9A1j2szo7zJcQw2J8Lky2yJnOky7OoJKNFNHQGux2nDsujfMU3yO
-----END RSA PRIVATE KEY-----
Bag Attributes
friendlyName: Наше имя скорей всего
localKeyID: ляляля
subject=йцуйцуйцуйцуйцу
issuer=йцуйцуйцуйцу
-----BEGIN CERTIFICATE-----
L90bf1Z2P0L2tu7+OhU/ODNRsb8T4s/TDbxUXuBJKb/EFQepg8gI1CEz6AyhjGO0
84gJ47ZIAMSNpTeqi6gXJ1b1pHxRNLe+q6BsElQB3QhmZzFW9MXfAqizQp7H9+yd
Ohg6NOry4jJ8op8uNWvboeHGPOf1zq8nR8GDQdatXJ2LIJ2a7hINvt1SrefFI/B8
EcDMYpAW61K0rqbg5vg/SbzbOII+wAu3TCL6NrAfh3vS+mzwhtUcx2GzsjTVc9Un
HCntukua8pcuFlFamxzUk/+rr2XoLI0CAwEAAaOBrTCBqjAOBgNVHQ8BAf8EBAMC
BLAwMQYDVR0lBCowKAYIKwYBBQUHAwEGCCsGAQUFBwMCBggrBgEFBQcDAwYIKwYB
BQUHAwQwZQYDVR0fBF4wXDBaoFigVoZUbGRhcDovL2NsaW8ub3QucnUvQ049T3Bl
-----END CERTIFICATE-----

иначе в логах будет строка вида(соответственно SSL соединения не будет):
SSL_CTX_use_RSAPrivateKey_file: B080074: error:0B080074509 certificate routines:X509_check_private_key:key values mismatch

3. Ну а дальше снова по образу и подобию

содержимое /etc/stunnel/pop.myoffice.ru.conf:

cert = /home/zaurus/myPEMcert.pem
#key = /usr/local/stunnel/stunnel.key
#chroot = /usr/local/stunnel/root
# PID is created inside chroot jail
pid = /tmp/stunnel-pop.myoffice.ru.pid
#setuid = nobody
#setgid = nogroup
# Authentication stuff
verify = 0
# don't forget about c_rehash CApath
# it is located inside chroot jail:
#### CAfile = /usr/local/stunnel/cacert.pem
# CRL path or file (inside chroot jail):
#CRLpath = /crls
# or simply use CAfile instead:
#### CRLfile = /usr/local/stunnel/clr.pem
debug = 7
output = /tmp/stunnel-pop.myoffice.ru.log
# Use it for client mode
client = yes
connect = pop.myoffice.ru:993 (993 - реальный SSL port на вашем почтовом серевере, который вам дали админы в конфигурации вашего почтового ящика )

4. содержимое /etc/stunnel/smtp.myoffice.ru.conf:
cert = /home/zaurus/myPEMcert.pem
#key = /usr/local/stunnel/stunnel.key
#chroot = /usr/local/stunnel/root
# PID is created inside chroot jail
pid = /tmp/stunnel-smtp.myoffice.ru.pid
#setuid = nobody
#setgid = nogroup
# Authentication stuff
verify = 0
# don't forget about c_rehash CApath
# it is located inside chroot jail:
#### CAfile = /usr/local/stunnel/cacert.pem
# CRL path or file (inside chroot jail):
#CRLpath = /crls
# or simply use CAfile instead:
#### CRLfile = /usr/local/stunnel/clr.pem
debug = 7
output = /tmp/stunnel-smtp.myoffice.ru.log
# Use it for client mode
client = yes
connect = smtp.myoffice.ru:465 (465 - реальный SSL port на вашем почтовом серевере, который вам дали админы в конфигурации вашего почтового ящика )

Все, а-ля готово.

Остается настроить почтового клиента (см. вложение)

Если же хотим сертификат защитить PEM паролем, то тунель придеться поднимать вручную:

stunnel /etc/stunnel/pop.myoffice.ru.conf
stunnel /etc/stunnel/smtp.myoffice.ru.conf
[К сообщению приложены файлы: scrn002.jpg (50 кб), scrn001.jpg (50 кб)]
[Ответить]