OpenSSL : PEM 루틴 : PEM_read_bio : 시작 줄 없음 : pem_lib.c : 703 : 예상 : TRUSTED CERTIFICATE [닫힘]


100

Stunnel의 CApath 디렉터리에 게시 할 파일의 해시 이름이 필요합니다. 이 디렉토리에 인증서가 몇 개 있으며 잘 작동하고 있습니다. 또한 서버 sert 및 서버 키가 있습니다.

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

내가 이해 한대로 내 인증서에 서명해야하지만 어떻게 할 수 있는지 이해가 안 돼요. 솔루션을 제공하십시오.

추신:

메시지

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

cert.pem에 대해 c_hash 를 만들 때 게시 됨 이것은 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:
...............

1
내가 잘못 교체하면 다른 세력의 도움이 사람,이 오류가 발생했습니다 keycert의 파일 https설정 객체가 제공하는 webpack.configS ' devServer.
tao

답변:


43
  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
openssl x509 -hash -noout -in해시 추출 을 실행 하여 도움이되는지 확인하십시오.
Noam Rathaus

유용합니다. 감사. 하지만 STunnel 로그에서 SSL_accept: 14094418: error:14094418:SSL routines:SSL3_READ_BYTES:tlsv1 alert unknown ca Connection reset: 0 byte(s) sent to SSL, 0 byte(s) sent to socketro make connection을 시도 할 때 오류가 표시 됩니다
lsv

다른 모두 그 말 뭔가, 그것은 양쪽이 동일한을 사용하지 않는 것을 의미 ca자신의 CA 인증서
노암 시청사에게

1
덕분에 openssl x509 -text -inform DER -in server_cert.pem내 변환 p7b뭔가 유용한로 인코딩 된 (?) 인증서를.
Koen.

3
내 문제는 여기에 설명 된대로 CRLF 라인 엔딩이 아니었지만,이 제안은 나를 추적하기에 충분했습니다. 내 문제는 내 파일이 BOM과 함께 2 바이트 유니 코드로 저장되었고 Windows 용 openssl이이를 처리 할 수 ​​없다는 것입니다. 나는 ascii로 다시 저장했고 작동했습니다.
Elroy Flynn

35

이것의 또 다른 가능한 원인은 x509가 아닌 것에 x509 모듈을 사용하려는 것입니다.

서버 인증서는 x509 형식이지만 개인 키는 rsa입니다.

그래서,

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

14

제 상황은 조금 달랐습니다. 해결책은 CERTIFICATE 및 PRIVATE KEY 섹션 외부의 모든 항목에서 .pem을 제거하고 나타나는 순서를 뒤집는 것입니다. 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-----

M 좀 멍청한 놈, pls는 편집 맥에서이 파일을 me..How 제안은
shubhamkes

비슷한 오류가 발생했습니다. 주문을 뒤집는 것이 저에게 효과적이었습니다.
Jon Richardson

: 내 키는 내가 새 파일을 만드는 데 필요한 별도의 파일에 온cat $SOURCE/privkey.pem $SOURCE/fullchain.pem > server.pem
ErichBSchulz

14

내 실수는 단순히 CERT 파일 대신 CSR 파일을 사용하는 것입니다.


2
적어도 내가이 실수를 저지른 유일한 사람은 아닙니다. 모듈이이 사실을 알려주지 않는다는 사실이 놀랍습니다.
edwardsmarkf

1
운동하는 데 몇 시간이 걸렸습니다. 모두 xmlsec1의 비밀 오류로 시작합니다.key is not found
Amichai Schreiber

8

Windows를 사용하여 동일한 문제가 발생했습니다. Notepad ++에서 열고 인코딩을 "UCS-2 LE BOM"에서 "UTF-8"로 변경하면 해결되었습니다.


6

BOM을 사용 하여 notepad ++ UTF-8 에서 인코딩을 변경 합니다. 그것이 나를 위해 일한 방법입니다


1
예! 이것은 나를 위해 일했습니다. 참고 Apple의 키 체인 유틸리티에서 내 보낸 PEM 인증서에는 BOM이 없으며 이로 인해 일부 프로그램이 혼란스러워집니다.
HughHughTeotl

5

이 작업 을 순진하게 시도 하면이 잘못된 오류가 발생할 수 있습니다 .

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

개인 키를 사용한 데이터 암호화는 설계 상 허용되지 않습니다 .

한 방향으로 이동 하는 유일한 옵션 인 open ssl명령 줄 옵션을 볼 수 있습니다 .encrypt -> decryptpublic -> 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

참고 : 내 설명은 명확성을 위해 단순화 한 것입니다. 자세한 내용은이 답변을 읽으십시오 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.