Python 开发的一个 SSL 在线工具,如何实现 SSL 加解密和证书管理?

SSLeye 通过 Python flask 框架开发,方便快捷地完成链路分析、哈希校验、对称算法、非对称算法、证书管理、SSL 安全等相关操作。 子项目: Let's Encrypt 免费证书 SSL 漏洞扫描 SSL 链路分析 CTF 编码与算法 功能模块: 对称算法:AES、DES、Triple DES、ChaCha20、Salsa20 等 哈希校验:MD2、MD4、MD5、SHA1、SHA224、SHA256、SHA384、SHA512、RIPEMD、RIPEMD160、HMAC。 非对称算法:公私钥的加解密、公钥的解析提取、公私钥对的生成、加密私钥的密码修改以及 PKCS 格式转换等。 证书工具:证书查看、CSR 查看、CSR 生成、私钥校验、证书格式转换、自签名证书生成。 SSL 检测:链路分析、协议 /加密套件、SSL 常见漏洞扫描等。

官网: http://www.ssleye.com/ 码云分享地址: https://gitee.com/wossl33/wossl github 分享地址: https://github.com/wossl33/wossl


Python 开发的一个 SSL 在线工具,如何实现 SSL 加解密和证书管理?

21 回复

关注 回复


要搞一个SSL在线工具,核心就是Python的sslcryptography这两个库。

加解密部分,用cryptography处理各种算法:

from cryptography.hazmat.primitives.asymmetric import rsa, padding
from cryptography.hazmat.primitives import serialization, hashes
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
import os

# RSA加解密示例
private_key = rsa.generate_private_key(public_exponent=65537, key_size=2048)
public_key = private_key.public_key()

# 加密
message = b"secret data"
ciphertext = public_key.encrypt(
    message,
    padding.OAEP(
        mgf=padding.MGF1(algorithm=hashes.SHA256()),
        algorithm=hashes.SHA256(),
        label=None
    )
)

# 解密
plaintext = private_key.decrypt(
    ciphertext,
    padding.OAEP(
        mgf=padding.MGF1(algorithm=hashes.SHA256()),
        algorithm=hashes.SHA256(),
        label=None
    )
)

证书管理,主要用cryptography.x509

from cryptography import x509
from cryptography.x509.oid import NameOID
from datetime import datetime, timedelta

# 生成自签名证书
subject = issuer = x509.Name([
    x509.NameAttribute(NameOID.COUNTRY_NAME, u"CN"),
    x509.NameAttribute(NameOID.ORGANIZATION_NAME, u"My Org"),
    x509.NameAttribute(NameOID.COMMON_NAME, u"example.com"),
])

cert = x509.CertificateBuilder().subject_name(
    subject
).issuer_name(
    issuer
).public_key(
    public_key
).serial_number(
    x509.random_serial_number()
).not_valid_before(
    datetime.utcnow()
).not_valid_after(
    datetime.utcnow() + timedelta(days=365)
).add_extension(
    x509.SubjectAlternativeName([x509.DNSName(u"localhost")]),
    critical=False,
).sign(private_key, hashes.SHA256())

# 解析证书
cert_pem = cert.public_bytes(serialization.Encoding.PEM)
loaded_cert = x509.load_pem_x509_certificate(cert_pem)
print(f"证书主题: {loaded_cert.subject}")
print(f"有效期至: {loaded_cert.not_valid_after}")

SSL/TLS通信用标准库ssl

import ssl
import socket

# 创建SSL上下文
context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
context.load_cert_chain(certfile="server.crt", keyfile="server.key")

# 服务端
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('localhost', 4433))
server_socket.listen()
conn, addr = server_socket.accept()
ssl_conn = context.wrap_socket(conn, server_side=True)

前端展示可以用Flask搭个Web界面,把上面的功能封装成API接口。用户上传证书就调用解析函数,需要加解密就调用对应的算法模块。

总结:用cryptography处理底层加密和证书,ssl处理TLS通信,Web框架提供界面。

支持一下

一个小建议,Github 的项目增加一个.gitignore 文件吧,把 pyc 的文件都忽略掉别放上去,不然看的有点乱

好的,近期修复,感谢建议

能提供一键全部漏洞检测么?

两个建议,支持一下 python3,提供一下 docker 镜像部署方式吧

兹持一个

担心这个站。。

担心什么,没用数据库,不会保留操作数据

还有漏洞要加,暂时不提供一健,后续会提供一健接口可能要收费

就我一个人在开发,暂时没时间呢,如果需求的多,后续会考虑优化开发和部署环境

支持一下

支持一下 需要赞助请联系我

界面不错呀

一般一般

关注一波

CSR 生成、私钥校验、证书格式转换

哈哈哈哈哈哈哈哈哈哈… 哪位大表哥敢用…

哈哈哈哈,没用数据库,估计谁都不信

回到顶部