如何为 Appium 服务器启用 SSL/TLS 并生成自签名证书?
【免费下载链接】appiumCross-platform automation framework for all kinds of apps, built on top of the W3C WebDriver protocol项目地址: https://gitcode.com/GitHub_Trending/ap/appium
如果你需要让 Appium 服务器只接受加密连接——例如客户端与服务器之间要传输自动化流量而不希望走明文 HTTP——可以在服务器启动时启用 SSL/TLS 支持。该功能从 Appium 2.2 开始提供,只需向appium server传入证书与私钥两个参数,客户端改用https协议通信即可;启用后所有不走 SSL 的客户端连接都会被服务器拒绝。
前提条件
- Appium 版本为 2.2 或更高(SSL/TLS 支持是 2.2 引入的)。
- 系统上已安装
openssl,用于生成自签名证书。
第一步:生成自签名证书和私钥
在准备放置证书的目录下执行文档给出的命令:
openssl req -nodes -new -x509 -keyout key.pem -out cert.pem -subj "/C=US/ST=State/L=City/O=company/OU=Com/CN=www.testserver.local"该命令会在当前目录生成两个文件:
key.pem:私钥文件(-keyout参数指定);cert.pem:自签名 X509 证书(-out参数指定)。
-subj后面的值是文档中的示例主体信息(国家、州/省、城市、组织、组织单位、通用名称),文档明确说明可以按实际情况替换为你自己的对应字段。证书必须是有效的 X509 PEM 格式,且要与私钥配套。
第二步:带 SSL 参数启动 Appium 服务器
启动时同时提供两个参数,二者缺一不可:
appium server --ssl-cert-path=/path/to/cert.pem --ssl-key-path=/path/to/key.pem--ssl-cert-path:证书的绝对路径,文件需为.cert/PEM 证书;--ssl-key-path:私钥的绝对路径。
CLI 参考文档同时说明:--ssl-cert-path必须与--ssl-key-path一起提供,反之亦然,单独提供其中一个不会生效。把/path/to/cert.pem与/path/to/key.pem替换为第一步实际生成文件的绝对路径(例如~/ssl/cert.pem对应的完整绝对路径)。
如果不需要调整其他选项,可以在此基础上照常用--port(默认 4723)等参数;这些与 SSL 参数互不冲突。
可选分支:通过配置文件提供证书路径
这两个选项也可以写进 Appium 配置文件(如.appiumrc.json),放在根属性server下,键名沿用 kebab-case:
{ "server": { "ssl-cert-path": "/abs/path/cert.pem", "ssl-key-path": "/abs/path/key.pem" } }配置文件支持 JSON、YAML、JS/CJS 等格式,Appium 会沿目录树向上自动发现(如.appiumrc.json),也可以用appium --config /path/to/config/file指定自定义位置。注意优先级规则:命令行参数优先于配置文件;同一项在两处都设置时,以命令行传入的值为准。配置键的完整定义见 Appium 配置 JSON Schema。
启动后如何验证
启用 SSL 后,验证方式来自文档本身描述的行为:
- 改用
https协议连接:服务器启动后,客户端必须使用https协议,并使用支持 SSL/TLS(或 SPDY)的客户端与服务器通信。此时你的自动化客户端的服务器地址应改为https://<host>:<port>。 - 明文连接被拒绝:所有不安全的(非 SSL)客户端连接都会被服务器拒绝。如果你用
http方式去连这个端口却被拒,反而说明 SSL 已生效。 - 支持的协议:安全套接字建立后,服务器支持的协议为
['h2', 'spdy/3.1', 'spdy/3', 'spdy/2', 'http/1.1', 'http/1.0'],即 HTTP/2 与 SPDY 各版本、以及 HTTP/1.1 和 1.0 均可协商。
自签名证书的注意事项
文档明确提示:服务器本身可以正常配合自签名证书运行,但客户端一侧需要正确配置,确保它不会拒绝未受信任(unauthorized)的证书。也就是说,使用自签名证书时,客户端需要把该证书加入信任或显式跳过证书校验,否则握手会失败。文档没有给出具体客户端的跳过校验参数写法,需要按你所用的客户端(如 WebDriver 客户端、语言 HTTP 库)的证书信任机制自行配置。
另外两点边界:
- 证书与私钥路径必须成对提供且真实存在,指向的是「有效的 X509 PEM 证书及其对应私钥」,证书与私钥不配套时无法建立安全套接字;
- 一旦启用 SSL,该服务器就不再接受明文连接,原有走
http的客户端会全部失效,切换前需要确认所有客户端都已改用https。
参考文档
- SSL/TLS/SPDY Support 指南:功能引入版本、启动参数、支持的协议、自签名证书命令与客户端注意事项的原始出处;
- appium server CLI 参考:
--ssl-cert-path、--ssl-key-path的参数说明与「必须成对提供」约束; - 配置文件指南:配置文件格式、发现规则与 CLI 优先级。
【免费下载链接】appiumCross-platform automation framework for all kinds of apps, built on top of the W3C WebDriver protocol项目地址: https://gitcode.com/GitHub_Trending/ap/appium
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考