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

В последнее время я испытываю трудности с созданием корректного самоподписанного сертификата. При попытке доступа к локальному сайту по протоколу 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. 

В списке шагов нет собственно настройки nextcloud на использование данного сертификата.

Порядок установки сертификата зависит от того, есть ли reverseproxy перед nextcloud, какой web сервер используется, на чем все запущено...
Похожие вопросы