eSSL - SSL сертификаты для встраиваемых систем

Создание корневого сертификата

  1. Установить openssl-1.0
  2. Отредактировать файл '/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
    
  3. Создать каталог my-certs где будет наш Центр Сертификации. Создать подкаталог conf и поместить туда наш файл конфигурации.
  4. Отредактировать в файле '/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.

  5. Выполнить команду
    		/usr/lib/ssl/misc/CA.pl -newca
    

    Она создаст необходимую структуру каталогов и корневой сертификат, и подпишет его самим собой.
    По запросу необходимо ввести пасс-фразу для будущего корневого сертификата и затем повторить её

    		Enter PEM pass phrase:
    Verifying - Enter PEM pass phrase:
    
  6. Ввести неоходимую информацию о вас как о Центре Сертификации: страну, регион, город, фирму. В поле '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
    
  7. Затем сделаем 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
    
  8. Создадим сертификат в формате x509
    		~/my-certs$ openssl x509 -in cacert.pem -out ca.crt
    
    Его нужно указать в файле конфигурации, тогда при создании пользовательских сертификатов не нужно будет каждый раз вводить пароль для корневого сертификата.
    		certificate	= $dir/ca.crt	 	# The CA certificate
    
  9. В результате у нас будет 4 файла
    		private/ca.key
    private/cakey.pem
    ca.crt
    cacert.pem
    
    Эти файлы надо "беречь как зеницу ока" ибо ими будут подписываться все сертификаты для конечных пользователей. Но файл ca.crt будет передаваться конечным пользователям для импорта в браузеры.
ПредпросмотрAttachmentSize
openssl-dev.cnf10.95 КБ

Комментарии

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

Спасибо! Интересно и про

Спасибо! Интересно и про особенности встраиваемых систем, и про сертификаты вообще.

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Syntax highlight code surrounded by the {syntaxhighlighter SPEC}...{/syntaxhighlighter} tags, where SPEC is a Syntaxhighlighter options string or "class="OPTIONS" title="the title".
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступны HTML теги: <a> <p> <span> <s> <strike> <div> <h1> <h2> <h3> <h4> <h5> <h6> <img> <map> <area> <hr> <br> <br /> <ul> <ol> <li> <dl> <dt> <dd> <table> <caption> <tbody> <tr> <td> <em> <b> <u> <i> <strong> <del> <ins> <sub> <sup> <quote> <blockquote> <pre> <address> <code> <cite> <embed> <object> <param> <strike>
  • Использовать как разделитель страниц.

Подробнее о форматировании