Создание и экспорт сертификатов — Linux — OpenSSL

VPN-шлюз подключения типа "точка — сеть" (P2S) можно настроить для использования проверки подлинности сертификата. Открытый ключ корневого сертификата передается в Azure, и каждый VPN-клиент должен иметь соответствующие файлы сертификатов, установленные локально для подключения. В этой статье показано, как создать самозаверяющий корневой сертификат и создать сертификаты клиента с помощью OpenSSL. Дополнительные сведения см. в статье со сведениями о проверке подлинности сертификата в пределах конфигурации подключения типа "точка — сеть".

Необходимые компоненты

Чтобы использовать эту статью, необходимо иметь компьютер под управлением OpenSSL.

Самозаверяющий корневой сертификат

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

  1. В следующем примере показано, как создать самозаверяющий корневой сертификат.

    openssl genrsa -out caKey.pem 2048
    openssl req -x509 -new -nodes -key caKey.pem -subj "/CN=VPN CA" -days 3650 -out caCert.pem
    
  2. Печать общедоступных данных самозаверяющего корневого сертификата в формате base64. Это формат, поддерживаемый Azure. Отправьте этот сертификат в Azure в рамках действий по настройке P2S.

    openssl x509 -in caCert.pem -outform der | base64 -w0 && echo
    

Сертификаты клиентов

В этом разделе описано, как создать сертификат пользователя (сертификат клиента). Файлы сертификатов создаются в локальном каталоге, в котором выполняются команды. Вы можете использовать один и тот же сертификат клиента на каждом клиентском компьютере или создать сертификаты, относящиеся к каждому клиенту. Важно отметить, что сертификат клиента подписан корневым сертификатом.

  1. Чтобы создать сертификат клиента, используйте следующие примеры.

    export PASSWORD="password"
    export USERNAME=$(hostnamectl --static)
    
    # Generate a private key
    openssl genrsa -out "${USERNAME}Key.pem" 2048
    
    # Generate a CSR (Certificate Sign Request)
    openssl req -new -key "${USERNAME}Key.pem" -out "${USERNAME}Req.pem" -subj "/CN=${USERNAME}"
    
    # Sign the CSR using the CA certificate and CA key
    openssl x509 -req -days 365 -in "${USERNAME}Req.pem" -CA caCert.pem -CAkey caKey.pem -CAcreateserial -out "${USERNAME}Cert.pem" -extfile <(echo -e "subjectAltName=DNS:${USERNAME}\nextendedKeyUsage=clientAuth")
    
  2. Чтобы проверить сертификат клиента, используйте следующий пример.

    openssl verify -CAfile caCert.pem caCert.pem "${USERNAME}Cert.pem"
    

Следующие шаги

Чтобы продолжить действия по настройке, ознакомьтесь с проверкой подлинности сертификата "точка — сеть".