Ключи и сертификаты для HTTPS сервера
Дата публикации: 2007-01-02
Это статья напоминалка - как сделать ключи и сертификаты для HTTPS сервера
Это статья напоминалка - как сделать ключи и сертификаты для HTTPS сервера
# создаем приватный ключ для собственного СА чтоб в дальнейшем им подписывать ключи и т.д. openssl genrsa -des3 -out ca.key 1024 # создаем сертификат своего CA подписанный нашим приватным ключом openssl req -new -x509 -days 365 -key ca.key -out ca.crt # c CA все сделано, теперь нужно сделать ключи и сертификаты для веб-сервера/вебсерверов # создаем приватный ключ для нашего веб-сервера openssl genrsa -des3 -out server.key 1024 # создаем файл запроса для подписи сертификата openssl req -new -key server.key -out server.csr # теперь его надо подписать. для этого надо создать пару вспомогательных файлов и каталогов # более простой вариант - воспользоваться скриптом sign.sh из каталога \pkg.contrib пакета mod_ssl # вот он полностьюDownload file sign.sh
#!/bin/sh ## ## sign.sh -- Sign a SSL Certificate Request (CSR) ## Copyright (c) 1998-2001 Ralf S. Engelschall, All Rights Reserved. ## # argument line handling CSR=$1 if [ $# -ne 1 ]; then echo "Usage: sign.sign <whatever>.csr"; exit 1 fi if [ ! -f $CSR ]; then echo "CSR not found: $CSR"; exit 1 fi case $CSR in *.csr ) CERT="`echo $CSR | sed -e 's/\.csr/.crt/'`" ;; * ) CERT="$CSR.crt" ;; esac # make sure environment exists if [ ! -d ca.db.certs ]; then mkdir ca.db.certs fi if [ ! -f ca.db.serial ]; then echo '02' >ca.db.serial fi if [ ! -f ca.db.index ]; then cp /dev/null ca.db.index fi # create an own SSLeay config cat >ca.config <<EOT [ ca ] default_ca = CA_own [ CA_own ] dir = . certs = $dir new_certs_dir = $dir/ca.db.certs database = $dir/ca.db.index serial = $dir/ca.db.serial RANDFILE = $dir/ca.db.rand certificate = $dir/ca.crt private_key = $dir/ca.key default_days = 3653 default_crl_days = 30 default_md = md5 preserve = no policy = policy_anything [ policy_anything ] countryName = optional stateOrProvinceName = optional localityName = optional organizationName = optional organizationalUnitName = optional commonName = supplied emailAddress = optional EOT # sign the certificate echo "CA signing: $CSR -> $CERT:" openssl ca -config ca.config -out $CERT -infiles $CSR echo "CA verifying: $CERT <-> CA cert" openssl verify -CAfile ca.crt $CERT # cleanup after SSLeay rm -f ca.config rm -f ca.db.serial.old rm -f ca.db.index.old # die gracefully exit 0
# подписываем запрос и получаем сертификат ./sign.sh server.csr # снимаем парольную проверку при старте апача cp server.key server.key.org openssl rsa -in server.key.org -out server.key # В итоге имеем три нужных файла файла - server.key, ca.crt, server.crt