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 加解密和证书管理?
关注 回复
要搞一个SSL在线工具,核心就是Python的ssl和cryptography这两个库。
加解密部分,用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 生成、私钥校验、证书格式转换
哈哈哈哈哈哈哈哈哈哈… 哪位大表哥敢用…
哈哈哈哈,没用数据库,估计谁都不信


