1. SSL_CONF_cmd란?

 #include <openssl/ssl.h>

 int SSL_CONF_cmd(SSL_CONF_CTX *cctx, const char *cmd, const char *value);
 int SSL_CONF_cmd_value_type(SSL_CONF_CTX *cctx, const char *cmd);
 int SSL_CONF_finish(SSL_CONF_CTX *cctx);
  • SSL_CONF_cmd() 함수는 ctx의 선택적 매개 변수 값을 사용 하여 구성 작업 cmd를 수행합니다. 그 목적은 커맨드 라인 옵션이나 설정 파일을 위한 공통 프레임웍을 제공함으로써 SSL_CTX 또는 SSL 구조의 애플리케이션 구성을 단순화 하는 것입니다.
  • SSL_CONF_cmd_value_type()은 cmd가 참조하는 값 유형을 리턴합니다 .
  • SSL_CONF_finish() 함수는 모든 구성 작업이 완료된 후에 호출해야 합니다. 모든 작업을 마무리하거나 기본값을 처리하는 데 사용됩니다.

2. Command Line Option

-sigalgs

TLS v1.2에 대해 지원되는 서명 알고리즘을 설정합니다. 클라이언트의 경우이 값은 지원되는 서명 알고리즘 확장에 직접 사용됩니다. 서버의 경우 지원할 서명 알고리즘을 결정하는 데 사용됩니다.

값 인자는 형태의 선호도가 감소하는 순서에 서명 알고리즘 콜론 분리 목록되어야 알고리즘 + 해시 . 알고리즘 의 하나 RSA , DSA 또는 ECDSA 및 해시 같은 지원 알고리즘 OID 짧은 이름 SHA1 , SHA224 , SHA256 , SHA384 의 SHA512 . 참고 : 알고리즘 및 해시 이름은 대 / 소문자를 구분합니다.

이 옵션을 설정하지 않으면 OpenSSL 라이브러리에서 지원하는 모든 서명 알고리즘이 허용됩니다.

-client_sigalgs

TLS v1.2의 클라이언트 인증과 관련된 지원되는 서명 알고리즘을 설정합니다. 서버의 경우, 값은 인증서 요청의 지원되는 서명 알고리즘 필드에서 사용됩니다. 클라이언트의 경우 클라이언트 인증서와 함께 사용할 서명 알고리즘을 결정하는 데 사용됩니다. 서버가 인증서를 요청하지 않으면이 옵션은 아무 효과가 없습니다.

value 구문은 -sigalgs와 동일합니다 . 설정되지 않은 경우 -sigalgs에 설정된 값이 대신 사용됩니다.

-curves

지원되는 타원 곡선을 설정합니다. 클라이언트의 경우 커브는 지원되는 커브 확장을 사용하여 전송됩니다. 서버의 경우 사용할 커브를 결정하는 데 사용됩니다. 이 설정은 적용 가능한 경우 서명과 키 교환에 사용되는 곡선에 영향을줍니다.

값 인수 곡선 콜론로 구분된다. 커브는 NIST 이름 (예 : P-256) 또는 OpenSSL OID 이름 (예 : prime256v1) 일 수 있습니다. 커브 이름은 대소 문자를 구별합니다.

-named_curve

일시적인 ECDH 모드에 사용되는 임시 곡선을 설정합니다. 서버에서만 사용됩니다.

값 인수는 곡선 이름 또는 특수 값입니다 자동 클라이언트와 서버 환경에 따라 적절한 곡선을 선택합니다. 커브는 NIST 이름 (예 : P-256 ) 또는 OpenSSL OID 이름 (예 : prime256v1 ) 일 수 있습니다. 커브 이름은 대소 문자를 구별합니다.

-cipher

Cipher suite 목록을 value로 설정합니다 . 참고 : SSL 또는 SSL_CTX 구조가 cctx와 연결되어 있지 않으면 현재 값의 구문 검사가 수행되지 않습니다 .

-cert

적절한 context의 인증서로서 파일 값을 사용한다. 현재 SSL_CTX 구조체가 설정된 경우 SSL_CTX_use_certificate_chain_file ()을 사용 하고 SSL 구조가 설정된 경우 파일 형식 PEM을 사용하여 SSL_use_certificate_file ()을 사용합니다. 이 옵션은 인증서 작업이 허용되는 경우에만 지원됩니다.

-key

적절한 context의 개인 키로서 파일 값을 사용한다. 이 옵션은 인증서 작업이 허용되는 경우에만 지원됩니다. 참고 : -key 옵션을 설정하지 않으면 개인 키가로드되지 않습니다. 현재 -cert 파일을 사용하지 않습니다 .

-dhparam

적절한 문맥에 대한 임시 DH 매개 변수 집합으로 파일 값 을 사용하려고 시도합니다 . 이 옵션은 인증서 작업이 허용되는 경우에만 지원됩니다.

-no_ssl2 , -no_ssl3 , -no_tls1 , -no_tls1_1 , -no_tls1_2

해당 옵션 SSL_OP_NO_SSLv2 , SSL_OP_NO_SSLv3 , SSL_OP_NO_TLSv1 , SSL_OP_NO_TLSv1_1 및 SSL_OP_NO_TLSv1_2를 각각 설정하여 SSLv2, SSLv3, TLSv1.0, TLSv1.1 또는 TLSv1.2에 대한 프로토콜 지원을 비활성화합니다 .

-bugs

SSL_OP_ALL 설정과 마찬가지로 다양한 버그 해결 방법이 설정 됩니다 .

-no_comp

SSL_OP_NO_COMPRESS 설정과 마찬가지로 SSL/TLS 압축 지원을 비활성화합니다 .

-no_ticket

SSL_OP_NO_TICKET 설정과 마찬가지로 세션 티켓에 대한 지원을 비활성화합니다 .

-serverpref

들어오는 연결에 사용할 암호 스위트, 서명 알고리즘 또는 타원 곡선을 결정할 때 클라이언트 기본 설정 순서가 아닌 서버를 사용하십시오. SSL_OP_CIPHER_SERVER_PREFERENCE 와 같습니다 . 서버에서만 사용됩니다.

-no_resumption_on_reneg

SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION 플래그를 설정하십시오. 서버에서만 사용됩니다.

-legacyrenegotiation

안전하지 않은 재협상을 허용합니다. SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION 을 설정하는 것과 같습니다 .

-legacy_server_connect , -no_legacy_server_connect

OpenSSL 클라이언트에 대해서만 안전하지 않은 레거시 재협상을 허용하거나 금지합니다. SSL_OP_LEGACY_SERVER_CONNECT 를 설정 또는 지우는 것과 동일합니다 . 기본적으로 설정됩니다.

-strict

엄격한 모드 프로토콜 처리를 가능하게합니다. SSL_CERT_FLAG_TLS_STRICT 설정과 동일 합니다.

-debug_broken_protocol

다양한 검사를 비활성화하고 테스트 목적으로 여러 가지 종류의 프로토콜 작동을 중단 시키므로 테스트 환경이 아닌 다른 곳에서 사용 해서는 안됩니다 . OpenSSL이 -DOPENSSL_SSL_DEBUG_BROKEN_PROTOCOL 로 구성된 경우에만 지원됩니다 .