SSL

NAME
SSL - OpenSSL SSL/TLS library

 

DESCRIPTION
OpenSSL ssl 라이브러리는 Secure Sockets Layer (SSL v2/v3)와 Transport Layer Security (TLS v1) 프로토콜을 구현한다. 여기 문서화되어 있는 많은 API를 제공한다.

먼저 라이브러리는 초기화되어야 한다; SSL_library_init(3)을 보라.

다음, SSL_CTX 개체가 프레임웤으로 생성되어 TLS/SSL이 가능한 연결을 만든다(SSL_CTX_new(3)을 보라). 인증서, 알고리즘 등과 관련된 다양한 옵션들이 이 객체에서 설정된다.

네트워크 연결이 생성될때, 그것은 SSL 개체로 할당될 수 있다. SSL-new(3)을 사용하여 SSL 개체가 만들어진 다음, SSL_set_fd(3) 또는 SSL_set_bio(3)을 사용하여 네크워크 연결과 개체를 연관시킬 수 있다.

다음, TLS/SSL 핸드셰이크가 SSL_accept(3) 또는 SSL_connect(3) 가 각각 사용되어 수행된다. SSL_read(3) 와 SSL_write(3) 는 TLS/SSL 연결상에서 데이터를 읽고 쓰는데 사용된다. SSL_shutdown(3)은 TLS/SSL 연결을 셧다운하는데 사용된다.

 

DATA STRUCTURES
현재 OpenSSL ssl 라이브러리 함수는 다음의 데이터 구조를 다룬다:

SSL_METHOD (SSL Method)
    내부 ssl라이브러리 메서드/함수를 설명하는 배포 구조체이다. 이 메서드와 함수들은 다양한
    프로토콜 버전(SSLv1, SSLv2, TLSv1)을 구현한다. SSL_CTX를 생성할 필요가 있다.

SSL_CIPHER (SSL Cipher)
    특정 사이퍼에 대한 알고리즘을 가진 구조체. 이 사이퍼들은 TLS/SSL 프로토콜의 핵심이다.
    가용한 사이퍼들은 SSL_CTX 기반위에 구성되고, 실제 사용되는 것들은 SSL_SESSION의
    부분이된다.

SSL_CTX (SSL Context)
    프로그램 생존시 한번 서버나 클라이언트에 의해서 만들어지는 글로벌 컨텍스트이다.

    그것은 주로 나중에 연결을 위해서 생성될 SSL구조체에 대한 기본값을 가진다.

SSL_SESSION (SSL Session)
    연결에 대한 TLS/SSL 세션 상세를 담고 있는 구조체:

    SSL_CIPHERs, client and server certificates, keys, etc.

SSL (SSL Connection)
    메인 SSL/TLS 구조체로써 만들어진 연결마다 서버나 클라이언트에 의해서 생성된다.

    이것은 실제 SSL API에서 핵심 구조체이다. 런타임하에서 어플리케이션은

    보통 거의 모든 다른 구조체와 연결을 가지고 있는 이 구조체를 다루게 된다.

 

HEADER FILES
Currently the OpenSSL ssl library provides the following C header files containing the prototypes for the data structures and and functions:

ssl.h
    SSL/TLS API에 대한 공통 헤더파일이다. ssl 라이브러리를 가용하도록 하기 위해서

    이것을 프로그램에 포함시켜야 한다. 내부적으로 더 사적인 SSL 헤더와

    crypto 라이브러리로부터의 헤더들을 포함하고 있다. SSL API의 내부에 대해서

    핵심 상세내역이 필요하면, 이 헤더파일을 보면된다.

ssl2.h
    SSLv2 프로토콜만 다루는 서브 헤더 파일이다. 보통 이것을 명시적으로 인클루드 할 필요는

    없다. 왜냐하면 이미 ssl.h에 인클루드 되어 있기 때문이다.

ssl3.h
    SSLv3 프로토콜만 다루는 서브 헤더 파일이다. 보통 이것을 명시적으로 인클루드 할 필요는

    없다. 왜냐하면 이미 ssl.h에 인클루드 되어 있기 때문이다.

ssl23.h
    SSLv2와 SSLv3의 결합된 사용을 다루는 서브 헤더 파일이다. 보통 이것을 명시적으로

    인클루드 할 필요는 없다. 왜냐하면 이미 ssl.h에 인클루드 되어 있기 때문이다.

tls1.h
    TLSv1 프로토콜만 다루는 서브 헤더 파일이다. 보통 이것을 명시적으로 인클루드 할 필요는

    없다. 왜냐하면 이미 ssl.h에 인클루드 되어 있기 때문이다.

위로 스크롤