Сервер переведён на принудительное перенаправление всего что можно на https, сертификат экзотично иероглифичный от wosign.com получить тут для прохождения процедуры нужен полный контроль за доменной почтой, так как для подтверждения будут высылаться письма, например на contact@whois webmaster@ postmaster@ hostmaster@ admin@ administrator@ либо можно выбрать способ верификации с размщением html странички в корневой дирректории вебсервера (я делал через почту, работает оперативно, но консольный mail из FreeBSD не справляется Content-Type: text/html; charset=utf-8 Сontent-Transfer-Encoding: base64, так что выручил mutt). Так же не морочился с генерацией мастер ключа у себя и отдался на волю "Generated by the system".

Есть небольшая проблема, судя по диагностике, у данного сертификационного центра нет серверов для поддержания IPv6-only инфраструктуры, но пожалуй это может быть проблемой только для совсем уж гиков, на дуалстеке работает нормально.

В итоге, после заполнения всех полей, и верификации доменов, вы получите письмо с ссылкой на скачивание запароленного архива, качаем к себе, распаковываем при помощи archivers/unzip (системный не умеет пароли), получаем

-rw-r--r--  1 root  wheel    5913 Jun 24 18:17 for Apache.zip
-rw-r--r--  1 root  wheel    6212 Jun 24 18:17 for IIS.zip
-rw-r--r--  1 root  wheel    5548 Jun 24 18:17 for Nginx.zip
-rw-r--r--  1 root  wheel    6249 Jun 24 18:17 for Other Server.zip
-rw-r--r--  1 root  wheel    4897 Jun 24 18:17 for Tomcat.zip

Как видно из названий, каждый архив содержит набор для какого либо сервера, с содержимым не всё ясно, видно процедура периодически меняется, а документация как обычно не актуализируется, на настоящий момент, я настраивал lighttpd (Other Server) ещё раз напоминаю, ключи на месте не генерировал (прийдёт в архиве)

Archive:  ../for Other Server.zip
 extracting: 4_user_bsdnir.info.key  
 extracting: 3_user_bsdnir.info.crt  
 extracting: 2_issuer_Intermediate.crt  
 extracting: 1_cross_Intermediate.crt

То есть, имеем ключ .key и три сертификата .crt для удобства сложить всё можно например в /usr/local/etc/lighttpd/ssl/bsdnir.info/

   1 cat 3_user_bsdnir.info.crt 2_issuer_Intermediate.crt 1_cross_Intermediate.crt > bsdnir.info.crt    # "сливаем" все сертификаты в один, важен порядок по убыванию цифры
   2 cat 3_user_bsdnir.info.crt 4_user_bsdnir.info.key > bsdnir.info.pem                                # "сливаем" с ключом
   3 openssl dhparam -out dhparams.pem 4096                                                             # генерируем ключ для Diffie-Hellman (не обязательно, но без него нынче сертификат считается слабым, вроде не выше B+), генерируется долго, вроде можно динамически подключить https://git.openssl.org/gitweb/?p=openssl.git;a=tree;f=apps [1]
   4 chmod 0400 bsdnir.info.crt                                                                         # ограничиваем права, сервер у нас стартует рутом, так что владельца можно не менять 
   5 chmod 0400 bsdnir.info.pem
   6 chmod 0400 dhparams.pem

Дальше начинаем надругаться над конфигом, будем исходить из того, что что то у нас уже было настроено, для работы по https, возможно более 1 домена и IP адреса, а то и всяких IPv6

$HTTP["scheme"] == "https" {
$HTTP["host"] =....
....
}

### SSL enable ###
var.ssl-cl = "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK"

$SERVER["socket"] == ":443" {                                                        # повторяем данную секцию для всех IP, которые будем обслуживать
        ssl.engine  = "enable"
        ssl.ca-file = "/usr/local/etc/lighttpd/ssl/bsdnir.info/bsdnir.info.crt"
        ssl.pemfile = "/usr/local/etc/lighttpd/ssl/bsdnir.info/bsdnir.info.pem"
        ssl.dh-file = "/usr/local/etc/lighttpd/ssl/bsdnir.info/dhparams.pem"
        ssl.ec-curve = "secp384r1"
        ssl.honor-cipher-order = "enable"
        # Disable vulnerable shit
        #ssl.use-compression = "disable"                                             # в моей версии ругается на неверный параметр [2]
        ssl.disable-client-renegotiation = "enable"
        ssl.use-sslv2 = "disable"
        ssl.use-sslv3 = "disable"
        ssl.cipher-list = var.ssl-cl
}

# Enable HSTS
server.modules += ( "mod_setenv" )
$HTTP["scheme"] == "https" {
        setenv.add-response-header = ("Strict-Transport-Security" => "max-age=15724800")
}
# Redirect HTTP to HTTPS
$HTTP["scheme"] == "http" {
        $HTTP["host"] =~ ".*" {
                url.redirect = (".*" => "https://%0$0")
        }
}

Полезно ознакомится:

https (last edited 2015-06-25 08:08:24 by andrey)