You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python生成用于Firebase的SHACertificate及对应sha_hash

解决方案

你现有代码已经生成了有效的X509证书,Firebase要求的sha_hash格式本质是证书指纹的大写十六进制字符串,每2个字符之间用冒号分隔,无需额外转换keystore格式,直接在现有代码基础上计算对应哈希值即可使用。

具体实现

在现有代码中新增以下逻辑,直接从已生成的PEM格式证书计算符合要求的SHA值:

import hashlib

# 处理PEM格式证书,去除头尾标记和换行符
pem_content = dumped_cert.decode("utf-8").strip()
# 移除-----BEGIN CERTIFICATE-----和-----END CERTIFICATE-----头尾行
pem_body = "".join([line.strip() for line in pem_content.splitlines() if not line.startswith("-----")])
# 转成二进制DER格式
der_cert = bytes.fromhex(pem_body)

# 计算SHA1指纹(Firebase常用格式)
sha1_hex = hashlib.sha1(der_cert).hexdigest().upper()
firebase_sha1 = ":".join([sha1_hex[i:i+2] for i in range(0, len(sha1_hex), 2)])

# 如需SHA256指纹,使用以下代码计算
sha256_hex = hashlib.sha256(der_cert).hexdigest().upper()
firebase_sha256 = ":".join([sha256_hex[i:i+2] for i in range(0, len(sha256_hex), 2)])

得到的firebase_sha1/firebase_sha256可以直接填入Firebase控制台的SHA证书输入栏,或者传入Admin SDK的SHA证书创建接口使用。

从已有JKS文件提取的方法

如果你需要从已导出的keystore文件中提取哈希,使用以下代码即可:

import jks
import hashlib

# 加载JKS文件
keystore = jks.KeyStore.load(filePath, password)
# 取对应别名的私钥条目
pke = keystore.private_keys[alias]
# 取第一条证书计算哈希
cert_data = pke.cert_chain[0][1]

# 后续计算逻辑和上面一致
sha1_hex = hashlib.sha1(cert_data).hexdigest().upper()
firebase_sha1 = ":".join([sha1_hex[i:i+2] for i in range(0, len(sha1_hex), 2)])

内容的提问来源于stack exchange,提问作者Wayne Whitehead

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 20:33:01