AWS Cert Mgr - Как создать сертификаты клиента и устройства?

Из технического выступления по AWS я узнал, что

введите здесь описание изображения

Я могу создать сертификат частного сервера, используя следующую опцию:

введите здесь описание изображения

-------------------

Сертификаты сервера служат основанием для шифрования и дешифрования содержимого.

В то время как

сертификат клиента, как следует из названия, явно используется для идентификации клиента для соответствующего пользователя

Сертификат устройства создает идентификацию для каждой «вещи» в экосистеме IoT, гарантируя, что каждое устройство аутентифицируется при подключении, и защищает связь между устройствами.


Мы создали корневой ЦС и подчиненный ЦС с помощью AWS Cert mgr через консоль.

Как создать сертификат устройства и клиента (частный) с помощью ACM GoLang sdk?


person overexchange    schedule 20.06.2019    source источник


Ответы (1)


[ОБНОВЛЕНИЕ после вопроса, заданного для ACM]

Используйте команду aws acm-pca issue-certificate, чтобы запросить сертификат:

CLIENT_ID="device-0001"
CLIENT_SERIAL=0001

# Create the CSR and Private Key
openssl req -new -newkey rsa:2048 -days 365 -keyout ${CLIENT_ID}.key -out ${CLIENT_ID}.csr

# Replace --certificate-authority-arn with your ARN returned when you create the certificate authority.

aws acm-pca issue-certificate \
--csr file://${CLIENT_ID}.csr \
--signing-algorithm "SHA256WITHRSA" \
--validity Value=375,Type="DAYS" \
--idempotency-token 12983 \
--certificate-authority-arn arn:aws:acm-pca:region:account:\
certificate-authority/12345678-1234-1234-1234-123456789012

Эта команда выводит ARN, сохраните это значение для следующей команды ($ MY-CERT-ARN)

aws acm-pca get-certificate \
--certificate-authority-arn arn:aws:acm-pca:region:account:\
certificate-authority/12345678-1234-1234-1234-123456789012 \
--certificate-arn $MY-CERT-ARN \
 --output text > ${CLIENT_ID}-cert.pem

[КОНЕЦ ОБНОВЛЕНИЯ]

Пример кода для создания сертификата клиента. Измените CLIENT_ID и CLIENT_SERIAL для каждого создаваемого сертификата. ca.pem и ca.key - это ваш сертификат CA и закрытый ключ.

CLIENT_ID="device-0001"
CLIENT_SERIAL=0001

openssl genrsa -aes256 -passout pass:xxxx -out ${CLIENT_ID}.pass.key 4096
openssl rsa -passin pass:xxxx -in ${CLIENT_ID}.pass.key -out ${CLIENT_ID}.key
rm ${CLIENT_ID}.pass.key

# generate the CSR
openssl req -new -key ${CLIENT_ID}.key -out ${CLIENT_ID}.csr

# issue this certificate, signed by the CA (ca.pem ca.key)
openssl x509 -req -days 375 -in ${CLIENT_ID}.csr -CA ca.pem -CAkey ca.key -set_serial ${CLIENT_SERIAL} -out ${CLIENT_ID}.pem

# Give the client the file: ${CLIENT_ID}.full.pem
cat ${CLIENT_ID}.key ${CLIENT_ID}.pem ca.pem > ${CLIENT_ID}.full.pem
person John Hanley    schedule 20.06.2019
comment
Извините ... Я имею в виду использование ACM. Я создал с использованием openssl - person overexchange; 20.06.2019
comment
При использовании ACM для частных сертификатов не требуется CSR - person overexchange; 20.06.2019
comment
Вы используете ACM или ACM PCA? Я обновил свой ответ для AWS ACM PCA, который использует CSR. - person John Hanley; 20.06.2019
comment
@overexchange - нельзя использовать AWS ACM для частных сертификатов. ACM поддерживает только сервисы, управляемые Google. Для выдачи собственных сертификатов необходимо использовать AMC PCA. - person John Hanley; 21.06.2019
comment
да, мы используем ACM PCA, а затем создаем собственные сертификаты для устройства, клиента и сервера. - person overexchange; 21.06.2019
comment
ACMgr поддерживает протокол SCEP? - person overexchange; 21.06.2019
comment
Мы используем golang sdk, но не язык, зависящий от предметной области, например aws cli. - person overexchange; 21.06.2019
comment
@overexchange - когда у вас есть новый вопрос, создайте новый вопрос. На этот вопрос дан ответ. - person John Hanley; 21.06.2019
comment
Добавлен новый вопрос: stackoverflow.com / questions / 56706023 / - person overexchange; 21.06.2019
comment
@overexchange - на ваш новый вопрос я не знаю ответа. Надеюсь, кто-нибудь узнает. - person John Hanley; 21.06.2019
comment
Есть идеи о поддержке нескольких регионов? stackoverflow.com/q/56701903/3317808 - person overexchange; 21.06.2019