Ada Web Server客户端HTTPS请求失败及Windows下SSL版本编译指导
Ada Web Server(AWS)HTTPS请求失败及Windows编译指南
问题描述
- HTTP请求通过
AWS.Client.Get(url)可正常获取响应,但HTTPS请求触发报错:raised PROGRAM_ERROR : SSL not supported. raised PROGRAM_ERROR : aws-client.adb:398 finalize/adjust raised exception - 核心需求:配置AWS支持HTTPS,实现终端用户无需手动下载证书即可使用应用;解决Windows 11环境下带SSL支持的AWS库编译问题(优先使用Alire,其次GPRBuild)。
解决方案
一、优先使用Alire编译带SSL的AWS库
Alire会自动处理所有依赖(包括OpenSSL、XMLAda),无需手动配置,步骤如下:
- 确保Windows已安装Alire,可通过官方安装包或包管理工具完成安装
- 进入你的Ada项目目录,执行命令添加AWS依赖:
Alire会自动下载并编译默认启用OpenSSL支持的AWS版本alr with aws - 编译你的项目:
alr build
二、手动使用GPRBuild编译AWS库(Windows环境)
如果需要基于GitHub源码手动编译,按以下步骤解决问题:
- 解决“grep not found”错误:
- 切换到Git Bash环境执行编译命令(Git Bash自带grep);或在MingW安装器中勾选
msys-grep组件完成安装
- 切换到Git Bash环境执行编译命令(Git Bash自带grep);或在MingW安装器中勾选
- 正确配置
makefile.conf:- 打开AWS源码根目录的
makefile.conf,设置SSL和XMLAda配置:SSL=openssl XMLADA=True - 在文件开头添加
Ada_Project_Path,指向你的Ada项目GPR文件所在目录:Ada_Project_Path=C:\path\to\your\project\gpr\files
- 打开AWS源码根目录的
- 编译执行步骤:
- 安装Windows版OpenSSL(建议使用MingW预编译包或官方发布版),并将OpenSSL的
bin目录加入系统环境变量Path - 打开Git Bash进入AWS源码根目录,依次执行:
mingw32-make setup mingw32-make build mingw32-make install
- 安装Windows版OpenSSL(建议使用MingW预编译包或官方发布版),并将OpenSSL的
- 免手动证书配置处理:
- 将系统根证书集合(如Windows系统证书库导出的
cert.pem,或OpenSSL提供的cacert.pem)打包到应用目录,在代码中指定证书路径:declare Config : AWS.Client.Config_Type; begin AWS.Client.Set_SSL_Certificate (Config, "path/to/embedded/cert.pem"); Response := AWS.Client.Get (Config, Target_Url); end;
- 将系统根证书集合(如Windows系统证书库导出的
三、项目导入验证
编译完成后,只需在你的项目GPR文件中添加:
with "aws";
即可正常导入AWS库(Alire会自动处理GPR路径;手动编译需确保AWS的GPR文件已在Ada_Project_Path范围内)
内容的提问来源于stack exchange,提问作者Royal Mail
相关产品推荐
相关产品推荐

