OpenSSL: PEM 루틴:PEM_read_bio: 시작선 없음: pem_lib.c:703: 예상: 신뢰할 수 있는 증명서
스턴넬의 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
제가 알기론 제 증명서에 서명해야 하는데, 어떻게 그렇게 할 수 있는지 모르겠어요.해결책을 제시해 주세요.
추신:
메시지
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를 만들 때 posted 이것은 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:
...............
Windows 를 사용하고 있기 때문에, Windows 의 증명서가 「호환」하고 있는 것을 확인해 주세요.무엇보다도 중요한 것은, 이 증명서에
^M
각 행의 끝에열면 다음과 같이 표시됩니다.
-----BEGIN CERTIFICATE-----^M MIIDITCCAoqgAwIBAgIQL9+89q6RUm0PmqPfQDQ+mjANBgkqhkiG9w0BAQUFADBM^M
'이것'을 해결하려면
Write
또는 메모장++를 사용하여 Windows "스타일"로 변환합니다.도망가려고 하다
openssl x509 -text -inform DER -in server_cert.pem
출력 결과를 확인해 주세요.개인 키나 개인 키를 신뢰할 수 없는 경우는 거의 없습니다.키 스토어에서 키를 내보낸 경우에만 신뢰해야 합니다.
X.509 이외의 것으로;x509; 모듈을 사용하려고 하는 경우도 생각할 수 있습니다.
서버 증명서는 X.509 형식이지만 개인 키는 RSA입니다.
그래서:
openssl rsa -noout -text -in privkey.pem
openssl x509 -noout -text -in servercert.pem
CERT 파일이 아닌 CSR 파일을 사용한 것이 실수입니다.
제 상황은 조금 달랐어요.해결책은 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-----
Windows에서도 같은 문제가 있었습니다만, Notepad++로 열어, 인코딩을 「UCS-2 LE BOM」에서 「UTF-8」로 변경해 수정했습니다.
BOM을 사용하여 메모장++ UTF-8의 인코딩을 변경합니다.나는 그렇게 했다.
순진하게 이것을 실행하려고 하면, 다음과 같은 잘못된 에러가 발생할 수 있습니다.
[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
할 수 하기 위해 "direction"이라고.
-sign sign with private key
-verify verify with public key
주의: 제 설명은 알기 쉽게 하기 위한 간략화입니다.자세한 내용은 이 답변을 참조하십시오.
언급URL : https://stackoverflow.com/questions/20837161/openssl-pem-routinespem-read-biono-start-linepem-lib-c703expecting-truste
'programing' 카테고리의 다른 글
Excel 시리얼 날짜 번호를 로 변환하려면 어떻게 해야 하나요?NET 날짜 시간? (0) | 2023.04.10 |
---|---|
데이터베이스 전체 SQL-Server 스크립팅 (0) | 2023.04.10 |
매크로를 사용하여 Excel 워크북의 모든 피벗 테이블 새로 고침 (0) | 2023.04.10 |
PowerShell에서 ForEach-Object를 종료하는 방법 (0) | 2023.04.10 |
목록에서 연속된 번호 그룹 식별 (0) | 2023.04.10 |