Как создать самоподписанный сертификат?

В последнее время я испытываю трудности с созданием корректного самоподписанного сертификата. При попытке доступа к локальному сайту по протоколу HTTPS возникает ошибка <blockquote>ERR_SSL_KEY_USAGE_INCOMPATIBLE</blockquote>, как в браузере <a href="https://i.imgur.com/9Tq75R6.png" rel="nofollow">MS Edge</a>, так и в Google Chrome на Windows 11. 

Я нашел <a href="https://superuser.com/a/1466427" rel="nofollow">решение</a>, которое связано с корректным указанием параметра <i>keyUsage</i> (также об этом упоминается в <a href="https://learn.microsoft.com/en-us/answers/questions/1523303/err-ssl-key-usage-incompatible" rel="nofollow">документации Microsoft</a>). Я генерирую ключ и сертификат с помощью WSL2 (Ubuntu 22.04.5 LTS) с использованием следующей команды: 
<pre><code>openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout nextcloud.key -out nextcloud.crt -config nextcloud.cnf -extensions v3_req</code></pre> 

Настройки в файле nextcloud.cnf выглядят так:
<pre><code>[req]
distinguished_name = req_distinguished_name
x509_extensions = v3_req
prompt = no

[req_distinguished_name]
CN = nextcloud.local

[v3_req]
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names

[alt_names]
DNS.1 = nextcloud.local
IP.1 = 172.26.223.13</code></pre> 

Я импортировал сертификат на <a href="https://i.imgur.com/dBPQckD.png" rel="nofollow">Windows</a>. Тем не менее, при попытке получить доступ к <a href="https://nextcloud.local" rel="nofollow">https://nextcloud.local</a>, ошибка все еще появляется. 

Не подскажете, где может быть ошибка?
  • 14 октября 2024 г. 9:23
Ответы на вопрос 2
Проблема с ошибкой `ERR_SSL_KEY_USAGE_INCOMPATIBLE` может быть связана с неверной настройкой параметров `keyUsage` и `extendedKeyUsage` в вашем конфигурационном файле `nextcloud.cnf`. Код, который вы предоставили, в целом верный, но давайте попробуем внести несколько изменений и убедиться, что вы создаете сертификат правильно.

1. **Обновите `keyUsage` и `extendedKeyUsage`**: Убедитесь, что вы используете правильные значения для ваших нужд в сертификате. Например, вместо использования `keyEncipherment`, давайте попробуем `keyAgreement`, если это необходимо, а также добавим `serverAuth` и `clientAuth` в `extendedKeyUsage`.

2. **Убедитесь, что вы соблюдаете правильный формат**: Параметры `keyUsage` и `extendedKeyUsage` должны быть правильно отделены запятыми и не должны содержать синтаксических ошибок.

Вот обновленный пример конфигурации `nextcloud.cnf`:

```ini
[req]
distinguished_name = req_distinguished_name
x509_extensions = v3_req
prompt = no

[req_distinguished_name]
CN = nextcloud.local

[v3_req]
keyUsage = digitalSignature, nonRepudiation, keyEncipherment
extendedKeyUsage = serverAuth, clientAuth
subjectAltName = @alt_names

[alt_names]
DNS.1 = nextcloud.local
IP.1 = 172.26.223.13
```

3. **Пересоздайте сертификат**: Сначала удалите ранее созданные файл сертификата и ключа, а затем выполните команду для создания нового:

```bash
rm nextcloud.key nextcloud.crt
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout nextcloud.key -out nextcloud.crt -config nextcloud.cnf -extensions v3_req
```

4. **Импортируйте сертификат в Windows**: После создания нового сертификата, импортируйте его снова в Windows, чтобы браузеры могли его распознать. Убедитесь, что вы импортируете сертификат в доверенные корневые центры сертификации.

5. **Очистите кэш браузера**: Иногда браузеры могут кэшировать старые сертификаты, поэтому попробуйте очистить кэш или перезапустить браузер.

Попробуйте выполнить эти шаги и посмотрите, устранит ли это ваши проблемы. Если ошибка все еще остается, убедитесь, что другие факторы (например, настройки вашего веб-сервера) не влияют на работу SSL.
По Вашему тексте непонятно,  где запущен nextcloud, на Windows или Ubuntu. <br/> <br/> В списке шагов нет собственно настройки nextcloud на использование данного сертификата. <br/> <br/> Порядок установки сертификата зависит от того, есть ли reverseproxy перед nextcloud, какой web сервер используется, на чем все запущено...
Похожие вопросы