Как создать самоподписанный сертификат SSL для использования при тестировании веб-приложения

Как создать самоподписанный сертификат SSL для сервера Apache, который будет использоваться при тестировании веб-приложения?

Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
22
0
11 494
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Используйте OpenSSL (http://www.openssl.org/)

Вот руководство: http://novosial.org/openssl/self-signed/

Вот хороший учебник для начала: SSH локальный.

Существуют различные инструменты, которые могут генерировать SSL. Например, попробуйте OpenSSL. В качестве альтернативы, он есть в Комплект ресурсов IIS 6, если вы используете Windows.

Ответ принят как подходящий

How do I create a self-signed SSL Certificate for testing purposes?

от http://httpd.apache.org/docs/2.0/ssl/ssl_faq.html#selfcert:

  1. Убедитесь, что OpenSSL установлен и находится в вашем PATH.

  2. Выполните следующую команду, чтобы создать 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
    
  3. Важно, чтобы вы знали, что этот server.key не имеет кодовой фразы. Чтобы добавить парольную фразу к ключу, вы должны выполнить следующую команду, ввести и проверить парольную фразу в соответствии с запросом.

    openssl rsa -des3 -in server.key -out server.key.new
    mv server.key.new server.key
    

    Сделайте резервную копию файла server.key и введенной парольной фразы, в безопасном месте.

Однако это не создаст самый безопасный тип хэша сертификата. Вы получите SHA-1 с RSA @ 2048 бит. SHA-512 или SHA-384 с ECDSA могут улучшить это и избежать слабости против АНБ.

Evi1M4chine 15.11.2013 18:09

WARNING: This is totally useless for purposes other than local testing.

Замените 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's 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's 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.

Другие вопросы по теме