создание сертификата для сайта
This commit is contained in:
parent
2f902f89f7
commit
3ba8def22a
|
@ -5,3 +5,4 @@
|
|||
## [initrd (Initial RAM Disk)](src/initrd.md)
|
||||
## [Базовая настройка подключения к серверу Samba](src/samba.md)
|
||||
## [Настройка загрузки PXE - EFI и Legacy](src/pxe-efi-legzcy.md)
|
||||
## [Создание сертификата для сайта](src/certs.md)
|
||||
|
|
|
@ -0,0 +1,105 @@
|
|||
# Создание сертификата для сайта
|
||||
|
||||
## Создание ключа и сертификата Certification Authority
|
||||
|
||||
### Создание приватного ключа CA
|
||||
|
||||
Создание ключа удостоверяющего центра (**Certification Authority**).
|
||||
|
||||
```sh
|
||||
openssl genrsa -out ca.key 4096
|
||||
```
|
||||
|
||||
Ключ с паролем создаётся с флагом `-des3`
|
||||
|
||||
```sh
|
||||
openssl genrsa -des3 -out ca.key 4096
|
||||
```
|
||||
|
||||
### Создание сертификата CA
|
||||
|
||||
Для создания сертификата CA необходимо использовать созданный ранее ключ `ca.key` (выше):
|
||||
|
||||
```sh
|
||||
openssl req -new -x509 -days 365 -key ca.key -out ca.crt
|
||||
```
|
||||
|
||||
Ответить на вопросы, где:
|
||||
|
||||
- `Country Name` - код страны двумя символами
|
||||
- `State or Province Name` - полное наименование страны
|
||||
- `Locality Name` - наименование города
|
||||
- `Organization Name` - наименование организации
|
||||
- `Organizational Unit Name` - наименование отдела (подразделения) в организации
|
||||
- `Common Name` - наименование адреса веб-страницы
|
||||
- `Email Address` - электронная почта
|
||||
|
||||
Пример:
|
||||
|
||||
```sh
|
||||
Country Name (2 letter code) [AU]:RU
|
||||
State or Province Name (full name) [Some-State]:Russia
|
||||
Locality Name (eg, city) []:Belgorod
|
||||
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Miratorg
|
||||
Organizational Unit Name (eg, section) []:IT
|
||||
Common Name (e.g. server FQDN or YOUR name) []:test.local
|
||||
Email Address []:a.zhirov@agrohold.ru
|
||||
```
|
||||
|
||||
## Создание ключа и сертификата для сайта
|
||||
|
||||
В качестве примера создать ключ и сертификат для сайта https://test.local
|
||||
|
||||
### Создание ключа для сайта
|
||||
|
||||
Приватный ключ хранится на стороне владельца сервера и не должен никогда никому отдаваться.
|
||||
|
||||
```sh
|
||||
openssl genrsa -out test.key 4096
|
||||
```
|
||||
|
||||
### Создание Certificate Signing Request
|
||||
|
||||
На базе приватного ключа `test.key` генерится так называемый *запрос на подпись сертификата* (**Certificate Signing Request**), в запросе заполняются параметры субъекта, затем этот файл отправляется CA и тот создаёт сертификат на основе данных из CSR, подписывает его своим приватным ключом, в результате получаем подписанный публичный сертификат.
|
||||
|
||||
Для включения нескольких DNS-имен необходимо использовать файл конфигурации (например, создать файл `openssl-csr.cnf` через текстовый редактор), содержащий данные о сертификате и расширенный запрос на добавление (данных), и в директиве `subjectAltName` указать список необходимых адресов для веб-страницы:
|
||||
|
||||
```conf
|
||||
[ req ]
|
||||
default_bits = 4096
|
||||
distinguished_name = req_distinguished_name
|
||||
req_extensions = req_ext
|
||||
|
||||
[ req_distinguished_name ]
|
||||
countryName = Country Name (2 letter code)
|
||||
countryName_default = RU
|
||||
stateOrProvinceName = State or Province Name (full name)
|
||||
stateOrProvinceName_default = Russia
|
||||
localityName = Locality Name (eg, city)
|
||||
localityName_default = Belgorod
|
||||
organizationName = Organization Name (eg, company)
|
||||
organizationName_default = Miratorg
|
||||
organizationalUnitName = Organizational Unit Name (eg, section)
|
||||
organizationalUnitName_default = IT
|
||||
commonName = Common Name (eg, YOUR name or FQDN)
|
||||
commonName_max = 64
|
||||
|
||||
[ req_ext ]
|
||||
basicConstraints = CA:FALSE
|
||||
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
|
||||
subjectAltName = DNS:test.local, DNS:*.test.local
|
||||
```
|
||||
|
||||
[Официальный пример конфигурационного файла](https://github.com/openssl/openssl/blob/master/apps/openssl.cnf).
|
||||
|
||||
Создание запроса на подпись сертификата на основе конфигурационного файла:
|
||||
|
||||
```sh
|
||||
openssl req -new -key test.key -config openssl-csr.cnf -reqexts req_ext -out test.csr
|
||||
```
|
||||
|
||||
### Создание сертификата для сайта
|
||||
|
||||
```sh
|
||||
openssl x509 -req -days 365 -CA ca.crt -CAkey ca.key -set_serial 01 -extfile openssl-csr.cnf -extensions req_ext -in test.csr -out test.crt
|
||||
```
|
Loading…
Reference in New Issue