咨询:pfSense的IPsec密钥采用何种哈希/编码方式?
关于pfSense中ipsec.secrets里PSK格式的解释
嘿,这个问题我刚好熟,帮你理清楚!
你看到的0sdnBu并不是哈希算法的结果,而是strongSwan标准的base64编码预共享密钥表示格式:
- 前缀
0s是strongSwan的标识,用来告诉程序后面的字符串是base64编码的内容 - 后面的
dnBu就是原始PSKvpn的base64编码结果
你可以自己验证一下:
echo -n 'dnBu' | base64 -d
运行这条命令后,输出就是vpn——完美对应你输入的原始预共享密钥。
为什么pfSense要这么处理?
pfSense在生成/var/etc/ipsec/ipsec.secrets时,会把你在Web界面输入的明文PSK转换成这种带0s前缀的base64格式。这不是加密(base64是可逆的编码方式),但相比直接把明文密钥写进文件,能降低意外泄露的风险,同时也是strongSwan支持的标准写法。
对你跨系统搭建隧道的意义
当你要在其他运行strongSwan的系统上配置和pfSense对接的IPsec隧道时,有两种等价的PSK配置方式:
- 直接使用明文密钥(用引号包裹):
: PSK "vpn" - 使用带
0s前缀的base64编码格式:: PSK 0sdnBu
两种写法strongSwan都会正确识别,效果完全一致,你可以根据目标系统的习惯选择其中一种。
要注意区分编码和哈希:哈希是单向不可逆的,没法从哈希值还原原始内容;而base64是双向编码,只是把二进制数据转换成易存储的文本格式,这也是为什么你能从0sdnBu反推出原始PSK的核心原因。
内容的提问来源于stack exchange,提问作者Oleg




