eSSL - SSL сертификаты для встраиваемых систем
- X509 v3 |
- subjectAltName |
- ssl |
- security |
- RFC 5280 |
- RFC 3280 |
- openssl |
- eSSL |
- embedded SSL |
- embedded linux |
- commomName |
- Certificate Authority |
- CA
Создание корневого сертификата
- Установить openssl-1.0
-
Отредактировать файл '/etc/ssl/openssl.cnf' (а лучше скопировать его себе в домашнюю папку) изменив там следующие строки:
[ CA_default ] dir = . # Where everything is kept unique_subject = no # Set to 'no' to allow creation of # several ctificates with same subject.
Здесь dir - это базовый каталог в котором будет располагаться наш собственный Центр Сертификации (Certificate Authority). Создаем его в текущем каталоге.
Т.к. наши устройства могут иметь одинаковые имена (параметр commonName при создании сертификата), по этому, параметром unique_subject, мы разрешаем создавать много сертификатов для одного субъекта.Зададим длину ключа в 2048 (а можно и в 4096) бит.
[ req ] default_bits = 2048
Далее можно указать параметры по умолчанию чтобы не вводить их каждый раз в ручную, хотя, для корневого сертификата их нужно будет вводить только один раз, если Вы не собираетесь делать сотню-другую корневых сертификатов.[ req_distinguished_name ] countryName = Country Name (2 letter code) countryName_default = RU countryName_min = 2 countryName_max = 2 stateOrProvinceName = State or Province Name (full name) stateOrProvinceName_default = Saint-Petersburg localityName = Locality Name (eg, city) localityName_default = Saint-Petersburg 0.organizationName = Organization Name (eg, company) 0.organizationName_default = My Cool Company # we can do this but it is not needed normally :-) #1.organizationName = Second Organization Name (eg, company) #1.organizationName_default = World Wide Web Pty Ltd organizationalUnitName = Organizational Unit Name (eg, section) #organizationalUnitName_default = commonName = Common Name (eg, YOUR name) commonName_default = My Device commonName_max = 64
- Создать каталог my-certs где будет наш Центр Сертификации. Создать подкаталог conf и поместить туда наш файл конфигурации.
-
Отредактировать в файле '/usr/lib/ssl/misc/CA.pl' следующие строки:
$SSLEAY_CONFIG="-config /home/user/my-certs/conf/openssl.cnf"; $CADAYS="-days 3650"; # 10 years $CATOP=".";
Здесь $SSLEAY_CONFIG зазадает путь к фаилу конфигурации.
$CADAYS указывает сколько дней будет действителен корневой сертификат
$CATOP указывает в каком каталоге будем работать. Этот параметр должен совпадать с тем что мы указали в dir в файле конфигурации на шаге 2. -
Выполнить команду
/usr/lib/ssl/misc/CA.pl -newca
Она создаст необходимую структуру каталогов и корневой сертификат, и подпишет его самим собой.
По запросу необходимо ввести пасс-фразу для будущего корневого сертификата и затем повторить еёEnter PEM pass phrase: Verifying - Enter PEM pass phrase:
-
Ввести неоходимую информацию о вас как о Центре Сертификации: страну, регион, город, фирму. В поле 'common Name' следует ввести что-то типа 'My Device root Certificate', эта строка будет в дальнейшем показываться в пути проверки сертификата в браузере пользователя. Чтобы просмотреть содержимое только что созданного сертификата выполните команду (тут в примере сертификат с ключем 1024 бит)
openssl x509 -in cacert.pem -noout -text Certificate: Data: Version: 3 (0x2) Serial Number: d9:98:4f:55:e0:bb:b3:3c Signature Algorithm: sha1WithRSAEncryption Issuer: C=RU, ST=Saint-Petersburg, O=My Cool Company, CN=My Device root Certificate Validity Not Before: Oct 11 12:16:26 2011 GMT Not After : Oct 8 12:16:26 2021 GMT Subject: C=RU, ST=Saint-Petersburg, O=My Cool Company, CN=My Device root Certificate Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (1024 bit) Modulus: 00:d1:d1:0a:11:a3:1e:67:2b:d2:39:3e:ea:bf:44: 04:f9:2a:ae:c4:37:a2:76:8b:fc:de:6c:04:5a:56: 35:0b:12:8e:e6:31:62:5a:88:b4:53:a5:bf:9f:63: ea:6d:33:f9:4a:84:a5:8b:b1:f3:0b:9e:56:f8:27: 0d:8c:be:1d:76:be:6c:e5:c9:f3:f1:b0:cd:df:79: b4:0b:05:db:25:15:c1:e5:b3:08:17:af:67:e9:be: 44:a2:ce:ed:9a:6c:16:bb:f6:8c:73:ab:dd:86:5a: 82:73:6c:5e:03:fa:6e:8e:06:07:dd:8e:fb:95:51: 16:4b:91:87:be:15:9e:12:21 Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Subject Key Identifier: 1F:1С:A6:43:A2:49:E7:16:49:EC:FD:73:71:72:D7:7F:24:6D:AC:17 X509v3 Authority Key Identifier: keyid:1F:1С:A6:43:A2:49:E7:16:49:EC:FD:73:71:72:D7:7F:24:6D:AC:17 X509v3 Basic Constraints: CA:TRUE Signature Algorithm: sha1WithRSAEncryption 60:f2:cf:c7:52:11:83:c7:ea:b7:ae:68:8a:63:7a:89:5b:d6: 4e:ae:ba:0d:9d:a3:e6:86:07:db:54:77:59:b1:f9:dc:38:bd: a2:31:b6:18:80:80:3d:e1:20:13:23:28:26:b8:b0:aa:4f:a8: f7:92:89:13:2a:48:62:29:fb:3c:b7:ab:23:cb:97:ae:7c:21: 15:8e:23:e3:13:a1:e1:0d:85:dc:d0:8d:f7:fc:a5:60:0e:bc: 5d:ea:31:d1:b4:ac:f6:24:b2:7e:4e:27:88:67:16:94:6e:5d: 4b:b4:ef:fa:8a:49:71:23:62:81:78:2c:03:a3:3d:ae:c9:7b: 5c:f8
-
Затем сделаем RSA ключ без пароля
~/my-certs$ openssl rsa -in private/cakey.pem -out private/ca.key Enter pass phrase for private/cakey.pem: writing RSA key
Его нужно указать в файле конфигурации(/home/user/my-certs/conf/openssl.cnf), тогда при создании пользовательских сертификатов не нужно будет каждый раз вводить пароль для корневого сертификата.
private_key = $dir/private/ca.key # The private key
-
Создадим сертификат в формате x509
~/my-certs$ openssl x509 -in cacert.pem -out ca.crt
Его нужно указать в файле конфигурации, тогда при создании пользовательских сертификатов не нужно будет каждый раз вводить пароль для корневого сертификата.
certificate = $dir/ca.crt # The CA certificate
-
В результате у нас будет 4 файла
private/ca.key private/cakey.pem ca.crt cacert.pem
Эти файлы надо "беречь как зеницу ока" ибо ими будут подписываться все сертификаты для конечных пользователей. Но файл ca.crt будет передаваться конечным пользователям для импорта в браузеры.
- блог пользователя GDI
- 25299 просмотров
Новые записи в блогах
- Устранение дребезга контактов на основе вертикальных счетчиков
- Диагностика Imprecise Bus Faults в микроконтроллерах Cortex-M3/M4/M4F
- Self-powered камера
- Фоновый модулятор: беспроводная связь из ничего (перевод)
- Texas Instruments Analog Applications Journal SLYT612 "Снижение искажений в аналоговых КМОП ключах" (перевод)
- USB MSD. Часть 6. Команды SCSI (перевод)
- USB MSD. Часть 3. USB класс накопителей данных (перевод)
- Texas Instruments Application Report SBAA042 "Кодовые схемы, используемые в аналогово-цифровых преобразователях" (перевод)
- 10 принципов правильного интерфейса
- Релиз SDK на русский микропроцессор КРОЛИК
Комментарии
Спасибо! Интересно и про
Спасибо! Интересно и про особенности встраиваемых систем, и про сертификаты вообще.
Отправить комментарий