部署OpenProject 14至Azure时遇PG::InternalError(FIPS禁用MD5哈希)求助
解决Azure Postgres Flexible + OpenProject 14 在FIPS合规租户下的MD5哈希错误
错误原因
FIPS合规模式下,PostgreSQL禁用了MD5哈希算法,但OpenProject默认连接或内部操作依赖MD5,导致抛出could not compute MD5 hash: disabled for FIPS错误。
解决方案
1. 切换Postgres Flexible Server的认证方式为SCRAM-SHA-256
- 登录Azure门户,定位到你的Postgres Flexible Server实例
- 进入连接安全选项卡,找到认证方法配置项
- 将认证方法从
MD5切换为SCRAM-SHA-256 - 保存设置后,重启Postgres服务器使配置生效
2. 更新数据库用户的密码(适配SCRAM认证)
切换认证方式后,需重新设置数据库用户密码,让Postgres生成SCRAM格式的哈希:
ALTER USER your_db_user WITH PASSWORD 'your_new_strong_password';
替换
your_db_user和your_new_strong_password为实际的数据库用户名和密码
3. 调整OpenProject的数据库连接配置
修改OpenProject的数据库连接参数,强制使用SCRAM认证:
- 如果使用配置文件
config/database.yml,添加scram-sha-256: true参数:
production: adapter: postgresql host: your-postgres-host.postgres.database.azure.com database: openproject_db username: your_db_user@your-postgres-host password: your_new_strong_password sslmode: require scram-sha-256: true
- 如果使用环境变量配置,更新
DATABASE_URL:
DATABASE_URL=postgres://your_db_user@your-postgres-host:5432/openproject_db?sslmode=require&scram-sha-256=true&password=your_new_strong_password
4. 配置OpenProject使用FIPS兼容的密码哈希算法
确保OpenProject存储用户密码时使用FIPS认可的算法(如PBKDF2-SHA256):
编辑OpenProject的config/initializers/devise.rb文件,修改密码哈希器配置:
Devise.setup do |config| # 替换默认哈希算法为PBKDF2-SHA256 config.password_hasher = :pbkdf2_sha256 end
PBKDF2-SHA256是FIPS合规的哈希算法,可替代MD5或bcrypt(部分环境下bcrypt未纳入FIPS认证)
验证部署
完成以上配置后,重新启动OpenProject服务,检查是否能正常连接数据库并完成初始化。
内容的提问来源于stack exchange,提问作者Pravyn Raju
相关产品推荐
相关产品推荐

