2011-02-19 3 views
11

OpenSSL을 사용하여 서버의 인증서를 확인하고 있습니다. OpenSSL은 기본 제공 루트 CA가 없으므로 출하되므로 루트 CA 인증서를 소프트웨어 (OpenSSL에 정적으로 링크)와 함께 배포해야합니다. 일반적으로 인증서 파일을 PEM 형식으로 배포하고 SSL_CTX_load_verify_locations를 호출하는 방법이 있습니다.C++/OpenSSL : 파일이 아닌 버퍼에서 루트 CA 사용 (SSL_CTX_load_verify_locations)

그러나이 함수는 파일/디렉토리 경로를 사용하고 파일 시스템에서 직접 루트 인증서 파일을 읽습니다. 파일 시스템에 저장하는 대신 바이너리에 인증서를 하드 코딩 할 수 있기를 정말로 원합니다.

다른 말로하면 우리는 파일 경로 대신 X509 *를 사용하는 SSL_CTX_load_verify_locations와 같은 기능을 갖고 싶어합니다.

이와 비슷한 것이 있습니까? 또는 함께 해킹 할 수있는 쉬운 방법이 있습니까? 우리는 이것에 대해 많은 정보를 찾을 수없는 것 같습니다.

제안 해 주셔서 감사합니다.

+0

SSL_CTX_load_verify_locations를 호출하기 전에 하드 코드 된 루트 인증서를 디스크에 저장하지 못하게하는 이유는 무엇입니까? –

+0

그러나 보안 응용 프로그램이므로 악의적 인 간섭이 걱정됩니다. 특히 루트 인증서 파일을 찾아서 덮어 쓰기가 쉬운 경우 SSL을 사용하는 모든 트랜잭션을 방해 할 수 있습니다. 필요하다면이 경로를 사용할 것이지만 루트 인증서를 바이너리 자체로 컴파일 할 수 있다면 좋을 것입니다. – DSII

+0

루트 CA를 파일로 저장하는 것보다 더 안전하게 하드 코딩하지 않아도됩니다. –

답변

18

기능 SSL_CTX_get_cert_store()는 확인 (X509_STORE *)에 사용되는 인증서 저장소에 대한 핸들을 가져올 수 있습니다, 그리고 (openssl/x509_vfy.h 단위) X509_STORE_add_cert() 기능은 그 인증서 저장소에 직접 인증서를 추가 할 수 있습니다.

+0

완벽한! 대단히 감사합니다. 이것은 훌륭하게 작동합니다. 정확히 내가 무엇을 찾고 있었는지. 감사! – DSII

관련 문제