Назад | Перейти на главную страницу

Как создать сертификат ECC для Windows Azure Mobile?

Я хочу, чтобы мои мобильные клиенты использовали меньше мощности процессора и меньше пропускной способности сети, и поэтому хочу использовать сертификат 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