IT story

openssl에서 -nodes 인수의 목적은 무엇입니까?

hot-time 2020. 9. 16. 20:59
반응형

openssl에서 -nodes 인수의 목적은 무엇입니까?


-nodesopenssl 에서 인수 의 목적은 무엇입니까 ?


옵션 -nodes은 영어 단어 "nodes"가 아니라 "no DES"입니다. 인수로 주어지면 OpenSSL이 PKCS # 12 파일 의 개인 키를 암호화하지 않음을 의미 합니다.

개인 키를 암호화하려면 생략 할 수 -nodes있으며 키는 3DES-CBC로 암호화됩니다. 키를 암호화하기 위해 OpenSSL은 암호를 입력하라는 메시지를 표시하고 해당 암호를 사용하여 키 파생 함수 EVP_BytesToKey를 사용하여 암호화 키를 생성합니다 .

OpenSSL 버전 및 컴파일 된 옵션에 따라 다음 대신 다음 옵션을 제공 있습니다 -nodes.

-des          encrypt private keys with DES
-des3         encrypt private keys with triple DES (default)
-idea         encrypt private keys with idea
-seed         encrypt private keys with seed
-aes128, -aes192, -aes256
              encrypt PEM output with cbc aes
-camellia128, -camellia192, -camellia256
              encrypt PEM output with cbc camellia

궁극적으로 라이브러리 수준에서 OpenSSL은 선택한 암호화 알고리즘 (또는 그 결여)을 사용하여 PEM_write_bio_PrivateKey 함수를 호출 합니다.


편집 : nginx v1.7.3은 컨텍스트의 encrypted-private.key 에서 각 암호를 시도하여 지정된 파일에서 암호를 읽는 ssl_password_file 지시문을 추가했습니다.

indiv는 -nodes인수가 OpenSSL이 UNencrypted private.key 를 생성한다는 것을 의미한다는 점에서 정확합니다 . 그렇지 않으면 encrypted-private.key 를 생성하라는 암호 프롬프트가 표시됩니다 . 참조 REQ , PKCS12 , CA.pl을

그러나 프로그래머 목적 은 다음과 같습니다.

  • HTTP 서버 (예 : Apache , Nginx )는 암호없이 encrypted-private.key읽을 수 없습니다
    • 옵션 A-HTTP 서버가 시작될 때마다 encrypted-private.key에 대한 암호를 제공해야합니다.
    • 옵션 B는 - 지정 ssl_password_file file.keys;http { }또는 server { }컨텍스트. [ 심판 ]
    • 옵션 C- 암호화없이 private.key-nodes 를 만드는 데 사용

유용함 : private.key 잠금

  • { ssl-cert 그룹 에 HTTP 서버 추가 }
  • sudo chown root:ssl-cert private.key- ch가 앤지 자신 의 어 private.key을루트 사용자, SSL-CERT의 그룹
  • sudo chmod 640 private.key-private.key의 접근 권한 을 소유자 R / W, 그룹 R로 변경
  • 이제 HTTP 서버가 UNencrypted private.key 를 시작하고 읽을 수 있어야합니다.

옵션 A

더 강력한 보안, 그러나 서버가 다시 시작될 때 encrypted-private.key에 대한 암호수동으로 입력해야합니다.

옵션 B

중간 수준의 보안, 아마 A / C 간의 좋은 균형

옵션 C

보안이 약하지만 암호화되지 않은 private.key 암호 를 요구하지 않습니다.

참고 URL : https://stackoverflow.com/questions/5051655/what-is-the-purpose-of-the-nodes-argument-in-openssl

반응형