skillfed

nassl

Experimental OpenSSL wrapper for Python 3.10+ and SSLyze.

nassl v5.4.0 176.2K downloads/30d#10,249 on PyPI42
AGPL license Active released

What it is and what it does

nassl is an experimental OpenSSL wrapper designed to provide access to low-level SSL/TLS functions that are not exposed by Python's standard ssl module or other common wrappers. It consists of two layers: a C extension (_nassl namespace) that closely mirrors OpenSSL's C API, and higher-level Python classes (nassl namespace) that provide a simpler interface for SSL connections. The package was created to support SSLyze, an SSL scanner that requires capabilities like testing for insecure renegotiation and session resumption.

The package explicitly warns that it is experimental and not production-ready, having not been thoroughly tested or reviewed. It supports Python 3.10 through 3.14 and is actively maintained, with prebuilt wheels available for major platforms. Installation requires a C compiler and OpenSSL development headers due to the compiled extension component.

Use it for:

  • Building SSL/TLS security scanners that need access to low-level OpenSSL functions unavailable in standard libraries
  • Testing SSL servers for specific vulnerabilities or misconfigurations like insecure renegotiation
  • Implementing custom SSL session resumption tests or protocol-level diagnostics
  • Extending SSLyze or similar security tools that require fine-grained control over SSL connections

Worth the install?

AI-flagged interpretation of the facts on this page — verify before relying

nassl is an OpenSSL wrapper for Python that exposes low-level SSL/TLS functions needed for SSL server scanning and testing, with a C extension layer that closely mirrors OpenSSL's API.

Yes, if you are building SSL security testing tools and need low-level OpenSSL access that standard Python ssl or pyOpenSSL do not provide. No, if you need production-ready code—the package explicitly disclaims production readiness. Be aware of AGPL v3 licensing obligations if incorporating into a larger project.

Install

nassl on PyPI

pip

pip install nassl

uv

uv add nassl

poetry

poetry add nassl

Installing nassl

Before you install

Medium install friction due to C extension compilation requirements. The package is actively maintained with recent commits and supports Python 3.10 through 3.14, with prebuilt wheels available for common platforms (macOS, Linux, Windows across multiple architectures).

License in practice

Licensed under AGPL v3, which requires derivative works and modifications to be released under the same license. This is a copyleft license with stronger obligations than permissive alternatives; review your project's licensing compatibility before use.

Quickstart

pip install nassl

import nassl
# Access low-level SSL functions via nassl._nassl namespace or higher-level interfaces via nassl namespace

Requires Python 3.10 or later. C extension compilation may require OpenSSL development headers on your system.

Verify before relying

  • Specific example code or API documentation showing how to perform common SSL testing tasks
  • Performance characteristics or limitations when scanning large numbers of servers
  • Current state of production readiness given the 'experimental' and 'not production ready' disclaimer in the description

Package facts

License not declared (agpl)
Python support supports the current Python release (>=3.10)
Install friction medium — platform-specific wheel
Runtime dependencies none
Maintenance actively maintained — 228 days since the last release
Last repo commit
First released
Downloads 176,248/month — #10,249 on PyPI (30-day window, as of 2026-08-14)
Known vulnerabilities none known (OSV.dev, checked 2026-08-14)

Evidence: nassl-5.4.0-cp310-cp310-macosx_11_0_arm64.whl; nassl-5.4.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl; nassl-5.4.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl; nassl-5.4.0-cp310-cp310-musllinux_1_2_aarch64.whl; nassl-5.4.0-cp310-cp310-musllinux_1_2_x86_64.whl; nassl-5.4.0-cp310-cp310-win_amd64.whl; nassl-5.4.0-cp311-cp311-macosx_11_0_arm64.whl; nassl-5.4.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl; nassl-5.4.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl; nassl-5.4.0-cp311-cp311-musllinux_1_2_aarch64.whl; nassl-5.4.0-cp311-cp311-musllinux_1_2_x86_64.whl; nassl-5.4.0-cp311-cp311-win_amd64.whl; nassl-5.4.0-cp312-cp312-macosx_11_0_arm64.whl; nassl-5.4.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl; nassl-5.4.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl; nassl-5.4.0-cp312-cp312-musllinux_1_2_aarch64.whl; nassl-5.4.0-cp312-cp312-musllinux_1_2_x86_64.whl; nassl-5.4.0-cp312-cp312-win_amd64.whl; nassl-5.4.0-cp313-cp313-macosx_11_0_arm64.whl; nassl-5.4.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl

Keywords: ssl, tls, scan, security, library

Development Status :: 4 - BetaIntended Audience :: DevelopersIntended Audience :: System AdministratorsLicense :: OSI Approved :: GNU Affero General Public License v3Natural Language :: FrenchProgramming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.14Topic :: SecurityTopic :: System :: MonitoringTopic :: System :: NetworkingTopic :: System :: Networking :: Monitoring

Tags

openssl wrapper pythonssl tls testing librarylow-level ssl functionsssl server scanningopenssl python bindings
ssl-tls-testingopenssl-bindingssecurity-scanning

More Monitoring packages

tqdm

Wraps any iterable to display a real-time…

copyleft · top 100 on PyPI

opentelemetry-semantic-conventions

Provides generated Python code for…

permissive · top 100 on PyPI

opentelemetry-sdk

Provides the reference implementation of the…

permissive · top 100 on PyPI

opentelemetry-api

Provides the abstract API and interfaces for…

permissive · top 100 on PyPI

opentelemetry-exporter-otlp-proto-http

Exports OpenTelemetry observability data to an…

permissive · top 1,000 on PyPI

opentelemetry-instrumentation

Provides automatic instrumentation commands and…

permissive · top 1,000 on PyPI

sslyze

SSLyze is a fast SSL/TLS scanning tool and…

agpl · top 15,000 on PyPI

tls-parser

Parses TLS records from binary data, extracting…

unclear · top 15,000 on PyPI

pyOpenSSL

pyOpenSSL wraps OpenSSL's SSL/TLS functionality…

permissive · top 1,000 on PyPI

M2Crypto

M2Crypto wraps OpenSSL via SWIG to provide…

permissive · top 15,000 on PyPI

oscrypto

oscrypto provides TLS sockets, key generation,…

permissive · top 1,000 on PyPI

backports.ssl

Provides the Python 3.4 ssl module API on older…

permissive · top 15,000 on PyPI

ndg-httpsclient

Provides enhanced HTTPS support for Python's…

permissive · top 5,000 on PyPI

openssl-ocsp-responder

Wraps OpenSSL's command-line OCSP responder to…

permissive · top 15,000 on PyPI

tlslite-ng

Pure Python implementation of SSL/TLS protocols…

copyleft · top 15,000 on PyPI

awscrt

Python bindings for the AWS Common Runtime,…

permissive · top 5,000 on PyPI