unix 2016-07-11 19-10-47
Полезные команды при работе с SSL-сертификатами
Создание ключа для SSL-сертификата.
openssl req -batch -noout -new -newkey rsa:2048 -nodes -keyout cert.key
В случае утери пароля или файла ключа придется заказывать пересоздание сертификата.
Генерация CSR-запроса:
openssl req -new -key cert.key -out cert.csr
Имя домена на который создается запрос прописывается в Common Name - example.com, A challenge password и An optional company name вводить не нужно (просто нажимаем enter).
Создание ключа и запроса с данными одной командой:
openssl req -batch -new -newkey rsa:2048 -nodes -keyout cert.key -subj '/C=RU/ST=Moscow/L=Moscow/O=Jingel Inc/OU=Research team/emailAddress=root@example.com/CN=example.com' -out cert.csr
Создание ключа и самоподписанного сертификата одной командой:
openssl req -newkey rsa:1024 -nodes -keyout server.key -out server.crt -x509 -days 3650 -subj \
"/C=XX/ST=XX/L=XX/O=XX/OU=XX/CN=example.com/emailAddress="root@example.com
Убрать пароль с ключа (необходимо когда сертификат ставится руками в конфигурацию Apache иначе он при запуске будет просить пароль):
openssl rsa -in cert.key -out cert.key
и вводим пароль с консоли (либо -passin pass:supersecretpassw0rd что менее секурно так как пароль сохраняется в .history)
Посмотреть данные CSR:
openssl req -noout -text -in cert.csr
Данные сертификата (проверить кем выдан например):
openssl x509 -noout -text -in cert.crt
Проверить, что ключ соответствует сертификату:
openssl x509 -noout -modulus -in cert.crt | openssl md5
openssl rsa -noout -modulus -in cert.key | openssl md5
Два значения должны совпадать.
Узнать длину запроса:
echo '(' `openssl req -noout -modulus -in cert.csr | cut -d'=' -f2 | wc -c` '-1)*4' | bc
Проверить выдачу HTTPS:
openssl s_client -connect localhost:443 -state -debug
GET / HTTP/1.0
Для почты:
openssl s_client -connect localhost:993 -showcerts
На операционной системе Windows (в IIS в частности) используется PFX-контейнер для сертификата, его можно создать из файлов ключа и сертификата командой:
openssl pkcs12 -export -in certificate.crt -inkey certificate.key -out certificate.pfx
Как изменить ssl-сертификат, выданный при регистрации сервера?
# cd /usr/local/etc/apache22/
# openssl req -new -newkey rsa:1024 -nodes -keyout server.key -x509 -days 5000 -out server.crt