python openssl 예제

메모리 BIO를 사용하여 연결을 만든 경우 이 메서드를 사용하여 해당 메모리 BIO의 읽기 끝에 바이트를 추가할 수 있습니다. 그런 다음 연결은 바이트를 읽을 수 있습니다(예: recv()에 대한 호출에 대한 응답으로). SSL 프로토콜 처리와 네트워크 IO를 결합하는 것은 일반적으로 잘 작동하지만 그렇지 않은 경우도 있습니다. 예를 들어 socket.socket 및 내부 OpenSSL 소켓 IO 루틴으로 가정되는 «파일 설명자의 선택/폴링»(준비 기반) 모델과 는 다른 IO 멀티플렉싱 모델을 사용하려는 비동기 IO 프레임워크가 있습니다. 이 모델은 효율적이지 않은 Windows와 같은 플랫폼과 관련이 있습니다. 이를 위해 SSLObject라는 SSLSocket의 축소된 범위 변형이 제공됩니다. 파이썬과 SSL 프로토콜 인스턴스 간에 데이터를 전달하는 데 사용할 수 있는 메모리 버퍼입니다. 기존 파이썬 소켓 양말을 래핑하고 SSLContext.sslsocket_class(기본 SSLSocket)의 인스턴스를 반환합니다. 반환된 SSL 소켓은 컨텍스트, 설정 및 인증서에 연결됩니다.

양말은 SOCK_STREAM 소켓이어야 합니다. 다른 소켓 유형은 지원되지 않습니다. 파이썬 응용 프로그램에서 OpenSSL 라이브러리를 사용하려면 아래와 같은 가져오기 키워드로 OpenSSL 라이브러리를 가져와야합니다. 이 컨텍스트에서 생성하거나 관리하는 SSL 세션에 대한 통계를 가져옵니다. 각 정보 조각의 이름을 숫자 값에 매핑하는 사전이 반환됩니다. 예를 들어 컨텍스트가 생성된 이후 세션 캐시의 조회 및 누락 의 총 수는 다음과 같습니다. 연결 인증서의 다른 쪽유효성 검사를 요구하려면 신뢰할 수 있는 각 발급자의 인증서 체인으로 채워진 «CA 인증서» 파일을 제공해야 합니다. 다시 말하지만,이 파일에는 이러한 체인이 함께 결합되어 있습니다.

유효성 검사의 경우 파이썬은 일치하는 파일에서 찾은 첫 번째 체인을 사용합니다. 플랫폼의 인증서 파일은 SSLContext.load_default_certs()를 호출하여 사용할 수 있으며, create_default_context()를 사용하여 자동으로 수행됩니다. X.509 v3 인증서 확장을 나타내는 클래스입니다. http://openssl.org/docs/apps/x509v3_config.html#STANDARD_EXTENSIONS 입력 이름 문자열 및 해당 옵션을 참조하십시오. 선택적 매개 변수 제목 및 발급자 X509 개체여야 합니다. 우리는 SSL에서 소켓 방법을 래핑하는 이점을 빠르게 보았습니다. SSL을 사용하여 쉽게 전환할 수 있는 연결 클래스입니다. 여기서 문제는 소켓 모듈에 C API가 없고 모든 메서드가 정적으로 선언된다는 것입니다.

한 가지 방법은 OpenSSL을 소켓 모듈의 하위 모듈로 socketmodule.c에 모든 코드를 배치하는 것이지만 소켓 모듈을 가져올 때 사용하지 않을 여분의 물건을 많이 가져 오기를 원하지 않을 수도 있기 때문에 분명히 좋은 해결책이 아닙니다. 다른 방법은 어떻게 든 호출 할 메서드에 대한 포인터를 얻는 것입니다, C 함수, 또는 호출 파이썬 개체. 많은 조회가 관련되어 있기 때문에 이것은 실제로 좋은 해결책이 아닙니다. 기본 컨텍스트와 IPv4/IPv6 듀얼 스택이 있는 클라이언트 소켓 예제: 향후 변경 사항은 fileno() 메서드가 있는 대신 read() 및 write() 메서드를 사용하는 파이썬 수준의 전송 개체를 허용하는 것일 수 있으므로 파이썬의 고급 기능을 사용할 수 있습니다.