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

如何为Erlang 24添加TLS_PSK_WITH_AES_128_CBC_SHA_256到默认加密套件列表

Erlang 24 启用TLS_PSK_WITH_AES_128_CBC_SHA_256加密套件方法

Erlang SSL模块默认不会启用PSK类加密套件,不需要修改Erlang源码,只需手动拼接自定义套件列表传入配置即可,不同场景的配置方法如下:


1 通用Erlang SSL服务启用自定义套件

  • 先获取当前tlsv1.2默认加密套件列表,将目标套件拼接至列表的对应优先级位置,启动SSL服务时传入自定义列表即可
  • 示例代码:
% 1. 转换目标套件为Erlang识别的map格式
TargetSuite = ssl:str_to_suite("TLS_PSK_WITH_AES_128_CBC_SHA_256"),
% 2. 获取tlsv1.2默认加密套件列表
DefaultSuites = ssl:cipher_suites(default, 'tlsv1.2'),
% 3. 拼接自定义套件列表,此处目标套件设为最高优先级
CustomSuites = [TargetSuite | DefaultSuites],
% 4. 启动SSL服务/客户端时传入配置,同时补充PSK相关参数
SslOpts = [
    {ciphers, CustomSuites},
    {versions, ['tlsv1.2']},
    {psk_identity, "自定义PSK身份标识"},
    {user_lookup_fun, fun(_PSKIdentity, _UserState) -> {ok, <<"PSK密钥二进制内容">>} end}
]

2 搭载MQTT插件的RabbitMQ启用该套件

无需修改Erlang代码,直接修改RabbitMQ配置即可:

方法一:通过rabbitmq.conf配置

配置文件默认路径为/etc/rabbitmq/rabbitmq.conf,添加以下内容:

# 启用TLS1.2
listeners.ssl.default = 5671
ssl.versions = tlsv1.2
# 配置加密套件,目标套件放在最前,后续拼接默认套件即可
ssl.ciphers = TLS_PSK_WITH_AES_128_CBC_SHA_256,ECDHE-ECDSA-AES256-GCM-SHA384,ECDHE-RSA-AES256-GCM-SHA384,ECDHE-ECDSA-AES256-CCM,ECDHE-ECDSA-AES256-CCM-8,ECDHE-ECDSA-AES256-SHA384,ECDHE-RSA-AES256-SHA384,ECDHE-ECDSA-CHACHA20-POLY1305,ECDHE-RSA-CHACHA20-POLY1305,ECDHE-ECDSA-AES128-GCM-SHA256,ECDHE-RSA-AES128-GCM-SHA256,ECDHE-ECDSA-AES128-CCM,ECDHE-ECDSA-AES128-CCM-8,ECDH-ECDSA-AES256-GCM-SHA384,ECDH-RSA-AES256-GCM-SHA384,ECDH-ECDSA-AES256-SHA384,ECDH-RSA-AES256-SHA384,ECDH-ECDSA-AES128-GCM-SHA256,ECDH-RSA-AES128-GCM-SHA256,ECDHE-ECDSA-AES128-SHA256,ECDHE-RSA-AES128-SHA256,ECDH-ECDSA-AES128-SHA256,ECDH-RSA-AES128-SHA256,DHE-RSA-AES256-GCM-SHA384,DHE-DSS-AES256-GCM-SHA384,DHE-RSA-AES256-SHA256,DHE-DSS-AES256-SHA256,DHE-RSA-AES128-GCM-SHA256,DHE-DSS-AES128-GCM-SHA256,DHE-RSA-CHACHA20-POLY1305,DHE-RSA-AES128-SHA256,DHE-DSS-AES128-SHA256,ECDHE-ECDSA-AES256-SHA,ECDHE-RSA-AES256-SHA,ECDH-ECDSA-AES256-SHA,ECDH-RSA-AES256-SHA,ECDHE-ECDSA-AES128-SHA,ECDHE-RSA-AES128-SHA,ECDH-ECDSA-AES128-SHA,ECDH-RSA-AES128-SHA,DHE-RSA-AES256-SHA,DHE-DSS-AES256-SHA,DHE-RSA-AES128-SHA,DHE-DSS-AES128-SHA

如果需要配置PSK身份校验函数,使用方法二。

方法二:通过advanced.config配置

配置文件默认路径为/etc/rabbitmq/advanced.config,添加以下内容:

[
    {rabbit, [
        {ssl_options, [
            {ciphers, [ssl:str_to_suite("TLS_PSK_WITH_AES_128_CBC_SHA_256") | ssl:cipher_suites(default, 'tlsv1.2')]},
            {versions, ['tlsv1.2']},
            {user_lookup_fun, {fun(PSKIdentity, _State) -> {ok, <<"你的PSK密钥内容">>} end, []}}
        ]}
    ]}
].

配置完成后执行systemctl restart rabbitmq-server重启服务生效。


验证配置是否生效

可在Erlang shell执行以下命令测试:

% 返回{ok, Socket}则代表配置生效
ssl:connect("你的RabbitMQ服务地址", 5671, [{ciphers, [ssl:str_to_suite("TLS_PSK_WITH_AES_128_CBC_SHA_256")]}, {versions, ['tlsv1.2']}, {psk_identity, "你的PSK身份标识"}, {psk, <<"你的PSK密钥内容">>}], 5000).

内容的提问来源于stack exchange,提问作者Der edle weiße Ritter

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 17:27:01