Я хочу, чтобы мои мобильные клиенты использовали меньше мощности процессора и меньше пропускной способности сети, и поэтому хочу использовать сертификат ECC для мобильных приложений Azure.
Как создать сертификат на основе ECC для использования с Azure Mobile?
OpenSSL вообще не нужен. Если вы можете использовать Microsoft CA, используйте его для запроса сертификата (через оснастку Certificates MMC). Чтобы использовать внешний ЦС, вы можете создать запрос сертификата с помощью certreq.exe
инструмент. Создайте следующий шаблон INF:
[NewRequest]
Subject="CN=<subject>"
KeyAlgorithm=ECDH_secP384r1
ProviderName="Microsoft Software Key Storage Provider"
KeyLength=384
Exportable=True
MachineKeySet=false
KeyUsage=0xa0
[EnhancedKeyUsageExtension]
OID=1.3.6.1.5.5.7.3.1 ; Server Authentication
OID=1.3.6.1.5.5.7.3.2 ; Client Authentication
и запустите команду:
certreq -new path\inffile.inf path\outrequest.req
выходной файл запроса может быть отправлен на сервер CA.
В качестве альтернативы вы можете использовать New-SelfSignedCertificate Командлет PowerShell для создания самозаверяющего сертификата. Синтаксис будет примерно таким:
New-SelfSignedCertificate -Subject "CN=<Subject>" `
-KeyAlgorithm ECDH_secP384r1 `
-CertStoreLocation cert:\currentuser\my `
-KeyExportPolicy Exportable `
-Type SSLServerAuthentication
<...>
при необходимости укажите другие параметры.
Чтобы сгенерировать ключ ECC, вам необходимо использовать OpenSSL. MSFT в настоящее время не поддерживает эту длину в битах в веб-приложениях.
Процесс создания этого сертификата:
validhost:~ lamont$ openssl ecparam -genkey -name secp384r1 | openssl ec -out ec384.key
read EC key
writing EC key
validhost:~ lamont$ openssl req -new -key ec384.key -out ec384.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.
-----
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:California
Locality Name (eg, city) []:San Francisco
Organization Name (eg, company) [Internet Widgits Pty Ltd]:VALID LLC
Organizational Unit Name (eg, section) []:Technology
Common Name (e.g. server FQDN or YOUR name) []:moonlight.social
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
validhost:~ lamont$ cat ec384.csr
Возьмите вывод CSR и получите подписанный сертификат. Затем выполните следующие команды, чтобы преобразовать файлы в PFX ... совместимый с Azure:
openssl pkcs12 -export -out your_pfx_certificate.pfx -inkey
your_private.key -in your_pem_certificate.crt -certfile CA-bundle.crt