- Generate RootCA.pem, RootCA.key & RootCA.crt as self-certified Certification Authority:
- Make request for certification: xhost.key, xhost.csr:
- Get xhost.crt certified by RootCA.pem:
- Import xhost.pfx in iis10
- Bind ssl with xhost.local certificate on port 443.
- Включение сертификатов на apache2
- Включить сертификаты для веб-сервера nginx
- Добавляем сертификат в macos keychain
- Как в windows для apache подключить ssl сертификаты
- Как сгенерировать ssl сертификат в windows
- Предварительные условия
- Решение проблем
- Связанные статьи:
- Сертификаты ssl
- Создать доверенный самозаверяющий сертификат ssl для localhost (для использования с express / node)
- Создать локальный ca
- Установите mkcert
- Установка certutil
- Установка golang
- Установка mkcert
- Шаг 1. создание локального ssl-сертификата
Generate RootCA.pem, RootCA.key & RootCA.crt as self-certified Certification Authority:
openssl req -x509 -nodes -new -sha256 -days 10240 -newkey rsa:2048 -keyout RootCA.key -out RootCA.pem -subj "/C=ZA/CN=RootCA-CA"
openssl x509 -outform pem -in RootCA.pem -out RootCA.crt
Make request for certification: xhost.key, xhost.csr:
C: Country
ST: State
L: locality (city)
O: Organization Name
Organization Unit
CN: Common Name
openssl req -new -nodes -newkey rsa:2048 -keyout xhost.key -out xhost.csr -subj "/C=ZA/ST=FREE STATE/L=Golden Gate Highlands National Park/O=WWF4ME/OU=xhost.home/CN=xhost.local"
Get xhost.crt certified by RootCA.pem:
openssl x509 -req -sha256 -days 1024 -in xhost.csr -CA RootCA.pem -CAkey RootCA.key -CAcreateserial -extfile domains.ext -out xhost.crt
with extfile domains.ext file defining many secured ways of accessing the server website:
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = localhost
DNS.2 = xhost
DNS.3 = xhost.local
DNS.4 = dev.example.org
DNS.5 = 192.168.1.2
Import xhost.pfx in iis10
installed in xhost computer (here localhost). and Restart IIS service.
IIS10 Gestionnaire des services Internet (IIS) (%windir%system32inetsrvInetMgr.exe)
Bind ssl with xhost.local certificate on port 443.
Restart IIS Service.
Включение сертификатов на apache2
Наш следующий шаг – установить наш веб-сервер и включить SSL для использования этих сертификатов, проверенных локально.
Я установил Apache2 и включил SSL, чтобы использовать это.
#apt install apache2 #systemctl enable apache2 #systemctl start apache2
Во-вторых, отредактируйте файл SSL, расположенный по адресу /etc/apache2/sites-available/default-ssl.conf, с нашим локально сгенерированным сертификатом SSL и ключевыми данными, как показано ниже:
Включить сертификаты для веб-сервера nginx
Создайте свою конфигурацию веб-страницы, как показано ниже.
Добавляем сертификат в macos keychain
- В Chrome открываем разрабатываемый сайт, который вы сконфигурировали для использования сертификата
- Щелкаем Cmd-Alt-I, чтобы открыть инструменты разработчика
- Щелкаем по вкладке Security
- Щелкаем по кнопке View certificate
Вы должны увидеть следующий экран.
Теперь перетаскиваем иконку сертификата в папку в приложении Finder.
Сертификат будет создан в данной папке. Делаем двойной щелчок по файлу. Если у вас имеются многочисленные keychain’ы, вы должны увидеть следующее окно:
Щелкаем Add. Если у вас только один keychain, то в таком случае ваш сертификат будет добавлен без какого-либо уведомления. Вне зависимости от того, появлялось ли уведомление или нет, у вас должно открыться окно Keychain Access. Найдите там свой сертификат:
Сделайте по нему двойной щелчок. Откроется окно с информацией о сертификате. Раскройте секцию Trust. Смените поле «When using this certificate:» на «Always Trust».
Закройте окно сертификата. Он попросит вас ввести пароль (или просканировать ваш палец), сделайте это. Теперь снова зайдите на свой разрабатываемый сайт.
Вы можете удалить файл сертификата из папки, в которую вы его перетащили, поскольку теперь он добавлен в keychain системы.
Если вам требуется SSL-сертификат для активного сайта, вы можете всегда приобрести его в магазине LeaderSSL.
Как в windows для apache подключить ssl сертификаты
При использовании сертификатов для настройки реального веб-сайта, удобнее создать виртуальный хост с примерно следующими настройками:
Как сгенерировать ssl сертификат в windows
У меня веб-сервер установлен в папку C:ServerbinApache24, поэтому если у вас он в другой директории, то подправьте команды под свои условия.
Откройте командную строку Windows (Win x, далее выберите «Windows PowerShell (администратор)»). В командной строке введите команды:
cmd cd C:ServerbinApache24bin set OPENSSL_CONF=C:ServerbinApache24confopenssl.cnf openssl.exe genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out localhost.key openssl.exe req -new -key localhost.key -out localhost.csr
При вводе последней команды появятся запросы на английском языке. Ниже следует их перевод.
You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. -----
Перевод:
Вас попросят ввести информацию, которая будет включена в запрос вашего сертификата. То, что вы будете вводить, называется Distinguished Name или DN. Там всего несколько полей, которые можно оставить пустыми. В некоторых полях будут значения по умолчанию. Если вы введёте ‘.’, то поле будет оставлено пустым.
Далее:
Country Name (2 letter code) [AU]:
Перевод:
Двухбуквенное имя страны (двухбуквенный код)
Далее:
State or Province Name (full name) [Some-State]:
Перевод:
Название штата или провинции/области (полное имя)
Далее:
Locality Name (eg, city) []:
Перевод:
Название населённого пункта (например, города)
Далее:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Перевод:
Название организации (т.е. компании).
Далее:
Organizational Unit Name (eg, section) []:
Перевод:
Подразделение организации (т.е. отдел)
Далее:
Common Name (e.g. server FQDN or YOUR name) []:
Перевод:
Общее имя (например, FQDN сервера или ВАШЕ имя). Это самая важная часть — здесь нужно ввести доменное имя. Можете ввести localhost.
Далее:
Email Address []:
Перевод:
Адрес электронной почты
Далее:
Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:
Перевод:
Пожалуйста, введите следующие «дополнительные» атрибуты для отправки с вашим запросом сертификата Пароль запроса: Опциональное имя компании:
Теперь выполните команду:
openssl.exe x509 -req -days 365 -in localhost.csr -signkey localhost.key -out localhost.crt
В результате в каталоге C:ServerbinApache24bin должны появиться три новых файла:
- localhost.key
- localhost.csr
- localhost.crt
Из них нам понадобятся только два:
- localhost.key
- localhost.crt
Предварительные условия
- Хорошо сконфигурированный сервер с привилегиями Go 1.10 и root.
- Инструмент базы данных сертификатов (Certutil)
Решение проблем
При некоторых условиях может возникнуть следующая ошибка:
Can't open C:Program FilesCommon FilesSSL/openssl.cnf for reading, No such file or directory
9112:error:02001003:system library:fopen:No such process:cryptobiobss_file.c:72:fopen('C:Program FilesCommon FilesSSL/openssl.cnf','r')
9112:error:2006D080:BIO routines:BIO_new_file:no such file:cryptobiobss_file.c:79:
unable to find 'distinguished_name' in config
problems making Certificate Request
9112:error:0E06D06A:configuration file routines:NCONF_get_string:no conf or environment variable:cryptoconfconf_lib.c:270:Главная подсказка в первой строке: Can’t open C:Program FilesCommon FilesSSL/openssl.cnf for reading, No such file or directory — она означает, что возникла ошибка чтения файла C:Program FilesCommon FilesSSL/openssl.cnf из-за того, что он отсутствует.
Файл openssl.cnf поставляется с самим веб-сервером Apache и находится в папке conf. Поэтому есть несколько вариантов, как исправить эту ошибку. Например, можно создать нужные папки и скопировать туда этот файл. Но можно пойти более простым путём — на время создания сертификатов установить переменную окружения OPENSSL_CONF указав в ней правильный путь до файла.
Также нужно переключиться из PowerShell в обычную командную строку Windows, поскольку иначе переменная окружения почему-то не устанавливается. Допустим, сервер размещён в папке C:ServerbinApache24bin, тогда файл openssl.cnf расположен по пути C:
cmd cd C:ServerbinApache24bin set OPENSSL_CONF=C:ServerbinApache24confopenssl.cnf
Отредактируйте пути в этих командах в соответствии с вашей структурой папок.
Связанные статьи:
Сертификаты ssl
SSL сертификаты можно разделить на два вида: валидные и самоподписанные.
Создать доверенный самозаверяющий сертификат ssl для localhost (для использования с express / node)
Ответы выше были частичными. Я потратил столько времени на то, чтобы это работало, это безумие. На заметку для себя в будущем: вот что вам нужно сделать:
Я работаю над Windows 10 с Chrome 65. Firefox ведет себя хорошо – просто подтвердите localhost как исключение безопасности, и он будет работать. В Chrome нет:
Шаг 1. В вашем бэкэнде создайте папку с именем security. мы будем работать внутри него.
Шаг 2. Создайте файл конфигурации запроса req.cnfсо следующим содержимым (кредит принадлежит: @Anshul )
req.cnf:
[req]
distinguished_name = req_distinguished_name
x509_extensions = v3_req
prompt = no
[req_distinguished_name]
C =Country initials like US, RO, GE
ST =State
L =Location
O =OrganizationName
OU =OrganizationalUnit
CN = www.localhost.com
[v3_req]
keyUsage = critical, digitalSignature, keyAgreement
extendedKeyUsage = serverAuth
subjectAltName =@alt_names[alt_names]
DNS.1= www.localhost.com
DNS.2= localhost.com
DNS.3= localhostОбъяснение этого поля находится здесь .
Шаг 3. Перейдите в папку безопасности в терминале и введите следующую команду:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout cert.key -out cert.pem -config req.cnf -sha256
Шаг 4. Затем вне securityпапки в экспресс-приложении сделайте что-то вроде этого: (кредит принадлежит @Diego Mello)
backend
/security
/server.jsserver.js:
const express = require('express')const app = express()const https = require('https')const fs = require('fs')const port =3000
app.get('/',(req, res)=>{
res.send("IT'S WORKING!")})const httpsOptions ={
key: fs.readFileSync('./security/cert.key'),
cert: fs.readFileSync('./security/cert.pem')}const server = https.createServer(httpsOptions, app).listen(port,()=>{
console.log('server running at ' port)})Шаг 5. Запустите сервер, node server.jsи перейдите по адресу https: // localhost: 3000. .
На этом этапе у нас есть настройка сервера. Но браузер должен показать предупреждающее сообщение.
Нам необходимо зарегистрировать наш самозаверяющий сертификат в качестве доверенного центра сертификации ЦС в хранилище сертификатов Chrome / Windows.(Chrome также сохраняет это в окнах,)
Шаг 6. Откройте Инструменты разработчика в Chrome, перейдите на панель «Безопасность» и нажмите «Просмотр сертификата».

Шаг 7. перейдите в панель Details, нажмите Copy File, затем, когда появится мастер экспорта сертификатов, нажмите Next, как показано ниже:

Шаг 8. оставьте кодировку DER, нажмите «Далее», выберите Browse, поместите его в легко доступную папку, такую как Рабочий стол, и назовите сертификат.localhost.cer, then click Save and then Finish. . Вы должны увидеть свой сертификат на рабочем столе.
Шаг 9. Откройте chrome://settings/, вставив его в поле url. Внизу нажмите Advanced / Advanced Options, а затем прокрутите вниз, чтобы найти Manage Certificates.

Шаг 10. Перейдите на панель «Доверенные корневые центры сертификации» и нажмите «Импорт».

Мы импортируем localhost.cerсертификат, который мы только что завершили на шаге 8.
Шаг 11. Нажмите «Обзор», найдите localhost.cer, оставьте значения по умолчанию, нажмите «Далее» несколько раз – пока не появится это предупреждение, нажмите «Да».

Шаг 12. закройте все и перезапустите хром. Тогда, идя к https://localhost:3000вам, вы должны увидеть:

Создать локальный ca
Теперь, когда утилита mkcert установлена, выполните команду ниже, чтобы сгенерировать локальный CA.
$ mkcert -install Created a new local CA at "/home/amos/.local/share/mkcert" ? The local CA is now installed in the system trust store! ⚡️ The local CA is now installed in the Firefox and/or Chrome/Chromium trust store (requires browser restart)! ?
Как показано в выходных данных, корневой CA хранится в /home/amos/.local/share/mkcert.
Вы также можете найти путь к корневому центру сертификации, выполнив команду ниже.
$ mkcert -CAROOT /home/amos/.local/share/mkcert
Установите mkcert
После завершения установки certutil загрузите двоичный файл mkcert с Github и установите его, как показано ниже.
Установка certutil
Инструмент базы данных сертификатов или Certutil – это простая утилита командной строки, которая может создавать / изменять сертификат и базы данных ключей.
Он может быть специально использован для отображения, генерации, изменения или удаления сертификатов.
Его можно даже использовать для создания или изменения пароля, создания новых пар public / private key.
Кроме того, он отображает содержимое базы данных ключей или удаляет пары ключей в базе данных ключей.
На нашем сервере Ubuntu мы можем установить его, выполнив следующую команду:
# apt install libnss3-tools
Установка golang
Go – это системный язык программирования общего назначения, с помощью которого мы можем создавать самые разнообразные приложения.
Язык и его инструментальные средства доступны в нашем репозитории по умолчанию.
Мы можем установить язык Go в Ubuntu 18.04, просто выполнив эту команду.
#apt install golang # go version go version go1.10.1 linux/amd64
Теперь мы можем создать файл «/etc/profile.d/goenv.sh» для настройки переменной окружения Go по всему серверу, как показано ниже:
# cat /etc/profile.d/goenv.sh export GOROOT=/usr/lib/go export GOPATH=$HOME/go export PATH=$PATH:$GOROOT/bin:$GOPATH/bin # source /etc/profile.d/goenv.sh
Установка mkcert
В зависимости от нашей платформы и требований ОС нам нужно загрузить исходный файл для инструмента Mkcert.
Шаг 1. создание локального ssl-сертификата
Во-первых, давайте установим mkcert на вашу машину. Если вы работаете в macOS, вы можете использовать для этого диспетчер пакетов Homebrew. Выполните следующую команду в своем терминале:
Затем давайте сделаем так, чтобы ваша операционная система доверяла локальным сертификатам, которые мы собираемся сгенерировать. Для этого вам необходимо установить локальный центр сертификации (CA) в системном хранилище доверенных сертификатов. Выполните следующую команду:
Далее вам нужно сгенерировать сертификат для домена localhost.
В терминале перейдите в корень вашего проекта Django. Затем запустите следующую команду терминала, чтобы сгенерировать сертификат для localhost и 127.0.0.1:
Если все прошло правильно, вы должны увидеть следующий результат:
В результате мы сгенерировали локальный сертификат SSL, который будет работать с любым сервером разработки localhost, работающим на любом порту.
