Как создать самоподписанный сертификат SSL для Apache Server, который будет использоваться при тестировании веб-приложения?
Как создать самоподписанный SSL-сертификат для использования при тестировании веб-приложения
Ответ 1
Как создать самоподписанный SSL Сертификат для тестирования?
from http://httpd.apache.org/docs/2.0/ssl/ssl_faq.html#selfcert:
-
Убедитесь, что OpenSSL установлен и находится в вашем PATH.
-
Выполните следующую команду, чтобы создать server.key и server.crt файлы:
openssl req -new -x509 -nodes -out server.crt -keyout server.key
В файле httpd.conf они могут быть использованы следующим образом:
SSLCertificateFile /path/to/this/server.crt SSLCertificateKeyFile /path/to/this/server.key
-
Важно, чтобы вы знали, что у этого server.key нет парольной фразы. Чтобы добавить ключевую фразу к ключу, вы должны запустить следующую команду и ввести и проверить парольную фразу в соответствии с запросом.
openssl rsa -des3 -in server.key -out server.key.new mv server.key.new server.key
Сохраните файл server.key и введенную парольную фразу, в надежном месте.
Ответ 2
Существуют различные инструменты, которые могут генерировать SSL. Попробуйте OpenSSL, например. Кроме того, там, где вы находитесь в Windows, есть один в ресурс IIS 6.
Ответ 3
ВНИМАНИЕ: Это абсолютно бесполезно для других целей, кроме локального тестирования.
Замените MYDOMAIN вашим локальным доменом. Работает и с localhost.
В какой-то папке создайте файл MYDOMAIN.conf. Добавьте в него следующий контент:
[ req ]
prompt = no
default_bits = 2048
default_keyfile = MYDOMAIN.pem
distinguished_name = subject
req_extensions = req_ext
x509_extensions = x509_ext
string_mask = utf8only
# The Subject DN can be formed using X501 or RFC 4514 (see RFC 4519 for a description).
# Its sort of a mashup. For example, RFC 4514 does not provide emailAddress.
[ subject ]
countryName = KE
stateOrProvinceName = Nairobi
localityName = Nairobi
organizationName = Localhost
# Use a friendly name here because its presented to the user. The server DNS
# names are placed in Subject Alternate Names. Plus, DNS names here is deprecated
# by both IETF and CA/Browser Forums. If you place a DNS name here, then you
# must include the DNS name in the SAN too (otherwise, Chrome and others that
# strictly follow the CA/Browser Baseline Requirements will fail).
commonName = Localhost dev cert
emailAddress [email protected]
# Section x509_ext is used when generating a self-signed certificate. I.e., openssl req -x509 ...
[ x509_ext ]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuer
# You only need digitalSignature below. *If* you don't allow
# RSA Key transport (i.e., you use ephemeral cipher suites), then
# omit keyEncipherment because that key transport.
basicConstraints = CA:FALSE
keyUsage = digitalSignature, keyEncipherment
subjectAltName = @alternate_names
nsComment = "OpenSSL Generated Certificate"
# RFC 5280, Section 4.2.1.12 makes EKU optional
# CA/Browser Baseline Requirements, Appendix (B)(3)(G) makes me confused
# In either case, you probably only need serverAuth.
# extendedKeyUsage = serverAuth, clientAuth
# Section req_ext is used when generating a certificate signing request. I.e., openssl req ...
[ req_ext ]
subjectKeyIdentifier = hash
basicConstraints = CA:FALSE
keyUsage = digitalSignature, keyEncipherment
subjectAltName = @alternate_names
nsComment = "OpenSSL Generated Certificate"
# RFC 5280, Section 4.2.1.12 makes EKU optional
# CA/Browser Baseline Requirements, Appendix (B)(3)(G) makes me confused
# In either case, you probably only need serverAuth.
# extendedKeyUsage = serverAuth, clientAuth
[ alternate_names ]
DNS.1 = MYDOMAIN
# Add these if you need them. But usually you don't want them or
# need them in production. You may need them for development.
# DNS.5 = localhost
# DNS.6 = localhost.localdomain
DNS.7 = 127.0.0.1
# IPv6 localhost
# DNS.8 = ::1
Создайте файлы сертификатов:
$ sudo openssl req -config MYDOMAIN.conf -new -x509 -sha256 -newkey rsa:2048 -nodes -keyout MYDOMAIN.key -days 1024 -out MYDOMAIN.crt
$ sudo openssl pkcs12 -export -out MYDOMAIN.pfx -inkey MYDOMAIN.key -in MYDOMAIN.crt
$ sudo chown -R $USER *
Заставьте свой локальный компьютер доверять своему сертификату:
# Install the cert utils
$ sudo apt-get install libnss3-tools
# Trust the certificate for SSL
$ pk12util -d sql:$HOME/.pki/nssdb -i MYDOMAIN.pfx
# Trust self-signed server certificate
$ certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n 'dev cert' -i MYDOMAIN.crt
Отредактируйте /etc/apache2/sites-available/default-ssl.conf
и убедитесь, что эти две директивы указывают на файлы .crt и .key, которые вы только что создали (откомментируйте их при необходимости):
SSLCertificateFile /path/to/MYDOMAIN.crt
SSLCertificateKeyFile /path/to/MYDOMAIN.key
Примените конфигурацию и перезапустите apache:
# If you are not using the default configuration ( /etc/apache2/sites-available/default-ssl.conf ),
# then replace "default-ssl" for whatever conf file name you've chosen
# ( DO NOT include the .conf bit ).
$ sudo a2ensite default-ssl
$ sudo service apache2 restart
Посетите https://MYDOMAIN в своем браузере. Firefox предупредит вас, что сертификат самоподписан и, следовательно, скажет, что он недействителен. Вам нужно будет добавить исключение.
Источник:
- Большую часть я получил от 3dw1n_m0535;
- Если у вас возникли проблемы, прочитайте файл README по адресу
/usr/share/doc/apache2/README.Debian.gz
Ответ 4
Используйте OpenSSL (http://www.openssl.org/)
Вот учебник: http://novosial.org/openssl/self-signed/
Вот хороший учебник для начала: SSH localhost.