YTKNetwork添加公钥绑定

该博客介绍了如何通过公钥绑定来加强移动端HTTPS请求的安全性,以避免Charles和Fiddler等工具的简单拦截。步骤包括:从后台获取.cer文件,将.pem或.crt转换为.cer,将cer文件添加到项目中,配置YTKNetwork以使用AFSecurityPolicy进行公钥固定,私有化YTKNetwork库并修改相关代码,最后进行拦截测试确保实施有效。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

移动端单纯的https请求无法避免中间者攻击,在请求时进行公钥绑定,可以避免Charles、Fiddler简单拦截就能查看接口明文内容的尴尬。

添加过程
1. 找后台要.cer文件
  • .pem.cer
openssl x509 -inform PEM -in name.pem -outform DER -out name.cer
  • .crt.cer
openssl x509 -in name.crt -out name.cer -outform der
  • 自己创建
openssl s_client -connect www.website.com:443 </dev/null 2>/dev/null | openssl x509 -outform DER > myWebsite.cer
2. 将.cer添加到项目中

在这里插入图片描述

2. 在AppDelegate中对YTKNetwork进行相关配置
    // !!!: YTKNetworkConfig初始化
    YTKNetworkConfig *config = [YTKNetworkConfig sharedConfig];
    config.baseUrl = YXBaseURL;
#if ISTEST // 测试环境
#else // 正式环境
    AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModePublicKey withPinnedCertificates:[AFSecurityPolicy certificatesInBundle:[NSBundle mainBundle]]];
    config.securityPolicy = securityPolicy;
#endif
3. 私有化YTKNetwork库,并修改相关代码

在这里插入图片描述

4. 从新运行项目,自己进行拦截测试。
<think>好的,我现在需要解决用户的问题:如何添加公钥到SSH配置或身份验证设置中。用户提到可能是为了SSH配置或其他身份验证用途,比如部署到Git服务。首先,我应该回顾自己之前学过的相关知识,并结合提供的参考信息来组织答案。 首先,用户可能是在使用SSH密钥对进行身份验证,例如连接到远程服务器或配置Git平台。添加公钥通常涉及生成密钥对,然后将公钥上传到目标服务。根据引用[1],用户可能需要在Git服务如Gitee中添加公钥,步骤包括复制公钥内容到账户设置中。引用[2]提到SSH快捷方式设置,这可能涉及到本地的SSH配置文件,比如~/.ssh/config,但用户当前的问题主要是添加公钥,所以重点应在生成密钥和部署公钥的过程。 接下来,我需要分步骤说明整个过程。首先,生成SSH密钥对。用户可能需要使用ssh-keygen命令,默认生成id_rsa和id_rsa.pub文件。然后,将公钥添加到SSH的授权文件中,以便本地连接到远程服务器时免密登录。这可能涉及到将公钥内容追加到远程服务器的~/.ssh/authorized_keys文件中。同时,如果用户需要将公钥添加到Git服务,如Gitee或GitHub,需要指导他们到账户设置中的SSH公钥部分进行添加。 需要注意的细节包括:正确设置文件权限,确保私钥保密,公钥的正确格式。例如,.ssh目录的权限应为700,authorized_keys文件权限为600,避免权限问题导致SSH连接失败。此外,在复制公钥内容时,要确保没有多余的空格或换行符。 可能的问题点:用户可能遇到权限错误,或者生成密钥时选择了非默认路径,导致后续步骤出错。因此,在步骤中需要明确说明默认路径和如何处理自定义路径的情况。另外,测试连接是否成功也是重要的步骤,比如使用ssh -T命令验证Git服务配置。 需要确保每个步骤清晰,用户能够跟随操作。例如,生成密钥对时,是否需要设置密码短语,这部分可以根据用户需求说明是可选的。添加公钥到远程服务器时,可能需要使用ssh-copy-id命令,或者手动创建文件,这需要分别说明。 最后,根据用户提供的示例回答结构,需要包含代码块(如命令示例)、可能的注意事项和相关问题。同时,引用提供的参考资料,特别是引用[1]中的Gitee公钥添加步骤,引用[2]中的SSH快捷方式设置,但后者可能不是当前问题的核心,可以简要提及或忽略。 总结步骤: 1. 生成SSH密钥对。 2. 添加公钥到SSH配置(本地到远程的认证)。 3. 添加公钥到Git服务或其他身份验证服务。 4. 测试连接。 需要详细说明每个步骤的具体操作和命令,并提醒注意事项。同时,生成相关问题,比如如何测试SSH连接、如何配置多个密钥等。</think>### 如何添加公钥到SSH配置或身份验证设置中? #### 1. **生成SSH密钥对** 首先需要生成一对SSH密钥(公钥和私钥)。私钥保留在本地,公钥需上传至目标服务器或平台: ```bash ssh-keygen -t rsa -b 4096 -C "your_email@example.com" ``` - 默认保存路径为 `~/.ssh/id_rsa`(私钥)和 `~/.ssh/id_rsa.pub`(公钥)。 - 输入密码短语(可选,增强安全性)[^2]。 #### 2. **添加公钥到远程服务器(SSH免密登录)** 将公钥部署到远程服务器的授权列表中: ```bash ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote_host ``` - 若无法使用 `ssh-copy-id`,可手动操作: 1. 复制公钥内容:`cat ~/.ssh/id_rsa.pub` 2. 登录远程服务器,将内容追加到 `~/.ssh/authorized_keys` 文件中: ```bash mkdir -p ~/.ssh echo "粘贴公钥内容" >> ~/.ssh/authorized_keys chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys ``` #### 3. **添加公钥到Git服务平台(如Gitee/GitHub)** 以Gitee为例: 1. 复制公钥内容:`cat ~/.ssh/id_rsa.pub` 2. 登录平台,进入 **设置 → SSH公钥添加公钥**,粘贴内容并保存[^1]。 #### 4. **验证配置是否成功** - **远程服务器**:尝试SSH连接: ```bash ssh user@remote_host ``` - **Git服务**:执行测试命令: ```bash ssh -T git@gitee.com # Gitee示例 ``` #### 注意事项 - **文件权限**:确保 `.ssh` 目录权限为 `700`,私钥为 `600`。 - **多密钥管理**:若需使用多个密钥,可在 `~/.ssh/config` 中配置别名: ```config Host myserver HostName remote_host User user IdentityFile ~/.ssh/custom_key ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值