TLS-сертификаты для авторизации в веб-приложения

Требования

В работе использую несколько веб-проектов, к которым у меня есть несколько требований:

  1. работа с веб-приложением осуществляется по протоколу https
  2. при заходе на веб-приложение избавиться от надоедливого предупреждения от броузеров о том, что сертификат на сайте не заверен центром сертификации
  3. кроме аутентификации по паролю, осуществлять доступ к веб-приложению на основе клиентского сертификата средствами веб-сервер nginx

Решение

Создание сертификатов

Для начала следует создать корневой сертификат и заполнить необходимую информацию

openssl genrsa -out ca.key 4096
openssl req -new -x509 -days 1826 -key ca.key -out ca.crt

FreeBSD - поддержка FTPS в ProFTPd

FTPS (File Transfer Protocol Secure) - защищенный протокол с шифрованием данных и управляющих FTP-команд. Используется для безопасной передачи файлов по FTP.
В реализации ProFTPd за реализацию инкапсуляции FTP-соединений по TLS/SSL отвечает модуль mod_tls.

Конфигурация порта proftpd

cd /usr/ports/ftp/proftpd && make showconfig |grep =on
     MYSQL=on "MySQL auth"
     NLS=on "Use nls (builds mod_lang)"
     OPENSSL=on "Include mod_tls"
     TLS_SHMCACHE=on "TLS SHM session cache (requires OPENSSL)"

Настройка

Фрагмент proftpd.conf, отвечающий за TLS/SSL

<IfModule mod_tls.c>
        TLSEngine on
        TLSLog /var/log/proftpd/tls.log
                            
        # Support both SSLv3 and TLSv1
        TLSProtocol SSLv3 TLSv1

        # Are clients required to use FTP over TLS when talking to this server?
        TLSRequired off

        # Server's certificate
        TLSRSACertificateFile /path/to/cert.crt
        TLSRSACertificateKeyFile /path/to/cert.key

        # Authenticate clients that want to use FTP over TLS?
        TLSVerifyClient off

        # Allow SSL/TLS renegotiations when the client requests them, but
        # do not force the renegotations.  Some clients do not support
        # SSL/TLS renegotiations; when mod_tls forces a renegotiation, these
        # clients will close the data connection, or there will be a timeout
        # on an idle data connection.
        TLSRenegotiate none
</IfModule>

Ссылки

FreeBSD - Apache + SSL

Настройка SSL

 mkdir /usr/local/etc/apache22/ssl
 cd /usr/local/etc/apache22/ssl

Сгенерим сертификат gen-cert.sh

 ./gen.sh (заполнить сертификат, подписать паролем)

Создадим файл /usr/local/etc/apache22/ssl/echo

 #!/bin/sh
 
 /bin/echo пароль

/usr/local/etc/apache22/extra/httpd-ssl.conf

 Listen 443
 
 AddType application/x-x509-ca-cert .crt
 AddType application/x-pkcs7-crl    .crl
 
 SSLPassPhraseDialog  |/usr/local/etc/apache22/ssl/echo
 SSLSessionCache        "shmcb:/var/run/ssl_scache(512000)"
 SSLSessionCacheTimeout  300
 SSLMutex  "file:/var/run/ssl_mutex"
 
 <VirtualHost *:443>
 
         DocumentRoot    "/home/www/wiki.vukor.tomsk.ru/public_html"
         ServerName      wiki.vukor.tomsk.ru:443
         UseCanonicalName Off
         SuexecUserGroup vukor vukor
         ServerAdmin     vukor@vukor.tomsk.ru
         ErrorLog        "/usr/home/www/wiki.vukor.tomsk.ru/error-ssl_log"
         TransferLog     "/usr/home/www/wiki.vukor.tomsk.ru/access-ssl_log"
 
         <Directory "/home/www/wiki.vukor.tomsk.ru/public_html">
                 <IfModule mod_fcgid.c>
                         <Files ~ (\.php)>
                                 SetHandler fcgid-script
                                 FCGIWrapper /home/www/wiki.vukor.tomsk.ru/cgi-bin/php.sh .php
                                 Options +ExecCGI
                         </Files>
                 </IfModule>
         </Directory>
 
         SSLEngine on
         SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
         SSLCertificateFile "/usr/local/etc/apache22/ssl/server.crt"
         SSLCertificateKeyFile "/usr/local/etc/apache22/ssl/server.key"
 
 </VirtualHost>

Ссылки

 
blog.txt · Последние изменения: 2013/01/23 14:51 — Антон Бугреев · []