문제

응용 프로그램을 구축하고 있으며 데이터 전송 보안을 위해 OpenSSL을 사용할 계획입니다.

클라이언트가 서버의 인증서를 검증하도록 할 계획입니다. 서버의 인증서를 어떻게 보호 해야하는지 혼란스러워합니다. 개인 키가 포함 된 서버의 인증서를 암호화하고 싶지만이 암호화에 하드 코딩 된 키를 사용하고 싶지 않습니다.

SSL을 사용하는 응용 프로그램과 함께 일반적인 관행은 무엇입니까?

도움이 되었습니까?

해결책

우리의 용어를 직접적으로 갖도록하기 위해 공동의 의회에서 "SSL 인증서"는 실제로 두 가지 구성 요소로 구성됩니다.

  • 공개 인증서
  • 개인 키

공개 인증서 구성 요소는 선택한 CA (인증 기관)가 서명 한 후 자유롭게 배포 할 수 있습니다. 보안 또는 암호화 할 필요는 없으며 실제로 SSL 협상의 일부로 서버에 연결하는 클라이언트로 전송됩니다.

개인 키 구성 요소를 보호해야합니다. 대부분의 경우, 이것은 단순히 서버의 암호화 된 파일로 저장됩니다. 고급 솔루션은 전용 "변조 방지"암호화 하드웨어 (HSM -Hardware Security Modules)를 사용하여 개인 키를 저장합니다. 이러한 범위는 스마트 카드 기반 솔루션에서 M/N 컨트롤 등이있는 멀티 키, 네트워크 지원 어플라이언스에 이르기까지 다양한 비용이 있습니다.

많은 응용 프로그램은 단순히 디스크의 개인 키를 유지합니다. 키 파일을 보호하기위한 몇 가지 옵션이 있습니다.

  • 시스템 및 파일 권한 보안에 의존합니다 (즉, 개인 키를 암호화하지 않음). 예를 들어, 대부분의 SSH 데몬은 이것을합니다.
  • 서버가 파일을 암호화하기 위해 제공하는 모든 메커니즘을 사용하십시오. 비밀번호로 보호 된 암호화는 대부분의 웹 서버에서 표준 기능입니다. (OpenSSL API를 사용하여 직접 굴리는 경우 명백한 기본 키 형식 중 하나를 선택하십시오).

항상 그렇듯이 보안 상충이 있습니다. 특히 개인 키 파일에서 암호로 보호 된 암호화를 사용하고 예상치 못한 응용 프로그램 재시작 (예 : 정전)을 경험하는 경우 다시 시작할 때 앱에 암호를 제공하기 위해 누군가가 사용할 수 있어야합니다. 시스템 초기화 스크립트가 읽은 파일에 비밀번호를 저장하면 (최소 2 개의 웹 서버 공급 업체가 권장 한대로) 실제 보안 측면에서는 거의 추가되지 않습니다. 개인 키 파일을 암호화하지 않은 상태로 두는 것이 어렵지만 소규모 상점에서 유일한 관리자/기술인 경우 서버가 사용할 수 없을 때 재부팅 할 수 있고 비즈니스에 대한 비용이 얼마인지 반드시 고려해야합니다. .

다른 팁

무엇을 묻고 있는지 잘 모르겠습니다. 서버 인증서는 고객에게 전송됩니다. 서명을 확인하여 인증서를 검증합니다 (MD5가 아닌 SHA-1 사용, MD5는 CRACKED입니다.) CA에서 가지고있는 키는 공개 측면입니다. CA와 Server Cert Holder는 개인 키를 스스로 유지합니다. 공개 키가 충분하기 때문에 인증서를 검증 할 수 있습니다. 해독 메시지 암호화 개인 키와 함께. 따라서 CERT를 전혀 암호화하는 것에 대해 걱정할 필요가 없습니다.

살펴보십시오 SSL/TLS에 관한 Wikipedia 기사.

서버의 인증서를 어떻게 보호 해야하는지 혼란스러워합니다.

서버의 인증서를 보호 할 필요가 없습니다. 공개 문서입니다

개인 키가 포함 된 서버의 인증서를 암호화하고 싶습니다.

서버의 인증서에는 개인 키가 포함되어 있지 않습니다.

그러나이 암호화에 하드 코딩 된 키를 사용하고 싶지 않습니다.

암호화를 수행 할 필요가 없습니다. 보호해야 할 유일한 서버 자산은 개인 키이며, 이는 인증서와 전혀 다릅니다. OpenSSL의 경우 다른 파일 일 수도 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top