Подтвердить что ты не робот

OpenSSL: подпрограммы PEM: PEM_read_bio: нет стартовой строки: pem_lib.c: 703: Ожидание: ДОВЕРЕННЫЙ СЕРТИФИКАТ

Мне нужно хэш-имя для файла для публикации в каталоге Stunnel CApath. У меня есть несколько сертификатов в этом каталоге, и они работают хорошо. Также у меня есть серверный сервер и серверный ключ:

cert = c:\Program Files (x86)\stunnel\server_cert.pem 
key = c:\Program> Files (x86)\stunnel\private\server_key.pem

Когда я пытаюсь вычислить хэш моего нового сертификата, я получаю сообщение об ошибке:

/etc/pki/tls/misc/c_hash cert.pem

unable to load certificate 140603809879880:error:0906D06C:PEM
routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: TRUSTED CERTIFICATE

Как я понимаю, я должен подписать свой сертификат, но я не понимаю, как я могу это сделать. Пожалуйста, предоставьте решение.

PS:

Сообщение

unable to load certificate 140603809879880:error:0906D06C:PEM
routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: TRUSTED CERTIFICATE:

опубликовал, когда я сделал c_hash для cert.pem Это не server_cert.pem, это Root_CA и это что-то вроде

-----BEGIN CERTIFICATE-----  
...6UXBNSDVg5rSx60=.. 

-----END CERTIFICATE-----

Когда я пишу

openssl x509 -noout -text -in cert.pem

В панели консоли я вижу эту информацию:

    Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 1 (0x1)
    Signature Algorithm: sha1WithRSAEncryption
        Issuer: C=BE, ST=BB, L=BB, O=BANKSYS NV, OU=SCY, CN=TEST Root CA
        Validity
            Not Before: May 31 08:06:40 2005 GMT
            Not After : May 31 08:06:40 2020 GMT
        Subject: C=BE, ST=BB, L=BB, O=BB NV, OU=SCY, CN=TEST Root CA
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    00:82:c8:58:1e:e5:7a:b2:63:a6:15:bd:f9:bb:1f:
............
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Basic Constraints: critical
                CA:TRUE
            X509v3 Key Usage: critical
                Certificate Sign, CRL Sign
            X509v3 Subject Key Identifier:
                76:70:AB:92:9B:B1:26:CE:9E:93:D8:77:4F:78:0D:B8:D4:6C:DA:C6
    Signature Algorithm: sha1WithRSAEncryption
         2c:7e:bd:3f:da:48:a4:df:8d:7c:96:58:f7:87:bd:e7:16:24:
...............
4b9b3361

Ответ 1

  1. Поскольку вы работаете в Windows, убедитесь, что ваш сертификат в Windows "совместим", и самое главное, чтобы в конце каждой строки не было ^M

    Если вы откроете его, оно будет выглядеть так:

    -----BEGIN CERTIFICATE-----^M
    MIIDITCCAoqgAwIBAgIQL9+89q6RUm0PmqPfQDQ+mjANBgkqhkiG9w0BAQUFADBM^M
    

    Чтобы решить "это", откройте его с помощью функции " Write или Notepad++ и попросите преобразовать его в "стиль" Windows.

  2. Попробуйте запустить openssl x509 -text -inform DER -in server_cert.pem и посмотрите, что выводится; маловероятно, что закрытый/секретный ключ окажется ненадежным, требуется только доверие, если вы экспортировали ключ из хранилище ключей, а ты?

Ответ 2

Другой возможной причиной этого является попытка использовать модуль x509 на чем-то, что не является x509.

Сертификат сервера в формате x509, но закрытый ключ rsa

Так,

openssl rsa -noout -text -in privkey.pem
openssl x509 -noout -text -in servercert.pem

Ответ 3

Моя ситуация была немного иной. Решение заключалось в том, чтобы вырезать pem из всего, что было за пределами разделов CERTIFICATE и PRIVATE KEY, и инвертировать порядок, в котором они появились. После преобразования из файла pfx в pem сертификат выглядел следующим образом:

Bag Attributes
localKeyID: ...
issuer=...
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
Bag Attributes
more garbage...
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----

После исправления файла это было просто:

-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----

Ответ 4

У меня была одна и та же проблема с Windows, полученная, если исправлена, открыв ее в Notepad ++ и изменив кодировку с "UCS-2 LE BOM" на "UTF-8".

Ответ 5

Вы можете получить эту вводящую в заблуждение ошибку, если наивно попытаетесь сделать это:

[clear] -> Private Key Encrypt -> [encrypted] -> Public Key Decrypt -> [clear]

Шифрование данных с использованием закрытого ключа не предусмотрено проектом.

Из командной строки для open ssl вы можете видеть, что единственные опции для encrypt → decrypt идут в одном направлении: public → private.

  -encrypt        encrypt with public key
  -decrypt        decrypt with private key

Другое направление намеренно предотвращено, потому что открытые ключи в основном "могут быть угаданы". Таким образом, шифрование с помощью закрытого ключа означает, что единственное, что вы получаете, - это проверка автором доступа к закрытому ключу.

Направление private key encrypt → public key decrypt называется "подписанием", чтобы отличать его от метода, который может реально защитить данные.

  -sign           sign with private key
  -verify         verify with public key

Примечание: мое описание является упрощением для ясности. Прочитайте этот ответ для получения дополнительной информации.

Ответ 6

Моя ошибка заключалась в простом использовании файла CSR вместо файла CERT.

Ответ 7

Изменить кодировку в блокноте ++ UTF-8 с спецификацией. Вот как это сработало для меня