V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
holinhot
V2EX  ›  问与答

CI 中怎么代码签名问题?

  •  
  •   holinhot · 263 天前 · 1332 次点击
    这是一个创建于 263 天前的主题,其中的信息可能已经有所发展或是发生改变。

    公司用的 Certum 的云 EV 代码证书。证书激活时在手机上装了一个类似 Google 验证器的 SimplySign App ( Certum 家的);

    手动签名的流程是电脑上安装 SimplySign (模拟 SafeNet 类似功能的虚拟设备)。 SimplySign 使用邮箱和手机 App 里的 6 位随机数字验证码登陆。 登陆成功后可以直接使用这个命令签名并输入 signtool sign /a /t http://timestamp.digicert.com /fd SHA256 setup.exe

    现在的问题是想把这个签名过程放到 CI 里面去,主要问题就是怎么在 CI 里面拿到上面那个 App 里的验证码?考虑过把验证码 App 装安卓虚拟机里,CI 通过接口去读屏幕上出现的验证码。

    还是把 SimplySign App 破解了直接用 php 来实现生成验证码的功能?

    13 条回复    2024-10-16 20:15:52 +08:00
    irainsoft
        1
    irainsoft  
       263 天前
    Certum 家的 code signing 本身就不支持 CI/CD 拓展,你要是真的搞一套 OCR 或者破解掉二步验证的话这安全性真的大打折扣,签名本身是一件很严谨的事情。如果是测试版的话直接自签解决,如果是正式版的话还是老老实实走流程吧,或者整个能网页批准的...
    holinhot
        2
    holinhot  
    OP
       263 天前
    @irainsoft 破解掉自己按密钥生成 code 这样最好啊。最坏的情况 App 密钥也是能重置的。主要是签名的不只有安装程序,程序里的 DLL 和 exe 都要签名,即使不破解,验证码肯定还是要给开发人员的。只是说那个验证码登陆后只能用 2 小时可以缩短时间相对安全一点点而已。对于小公司来说代码签名即使被盗,也不会有大厂那么大风险。
    virusdefender
        3
    virusdefender  
       263 天前
    公司选择云签名可能有安全性的考虑吧,你要这么做的话,和自己存储私钥就没啥区别了,看看之后续费的时候可以换一下么。
    holinhot
        4
    holinhot  
    OP
       263 天前 via iPhone
    @virusdefender 公司觉得 U 盾版的多个人共用很不方便。
    caotian
        5
    caotian  
       263 天前
    CI 流程运行时间如果不超过验证码过期时间,可以提交代码触发 CI 的时候,手工把验证码填写到 commit message 里,这样 CI 流程可以从 commit message 读取到验证码
    Puteulanus
        6
    Puteulanus  
       263 天前
    “SimplySign 使用邮箱和手机 App 里的 6 位随机数字验证码登陆”
    验证码有邮件的吗,邮件的好搞,CI 里写个工具去邮箱捞一下最近的邮件
    julyclyde
        7
    julyclyde  
       263 天前   ❤️ 1
    建议 ci 过程不要用对外发布的那个 key 签名哦
    内测版可以签一下试试

    如果可以发邮件通知六位数,那你就写个程序从邮箱里读出来
    nieyujiang
        8
    nieyujiang  
       263 天前 via iPhone
    我司 windows 客户端也遇到这种问题,只不过我们是固定密码,然后我随手写了个 windows 的程序自动帮我填密码
    holinhot
        9
    holinhot  
    OP
       262 天前
    @Puteulanus 他的验证码似乎是 Google 验证器那种离线生成的,只是生成算法和 Google 的不一样。验证码不是在线生成的
    holinhot
        10
    holinhot  
    OP
       261 天前
    解决了。不用破解。certum 激活步骤中有提供一个二维码。解析出来就能拿到
    secret=xxxxx&issuer=Certum&algorithm=SHA1&digits=6&period=30
    然后自己生成 CODE 就行,都不用他那个 APP 了
    SuoRan
        11
    SuoRan  
       226 天前
    @holinhot 请问你是怎么操作成功的呢,我是使用 github actions 来构建的
    right0
        12
    right0  
       36 天前
    @holinhot 它这个 secret 是什么格式的啊
    right0
        13
    right0  
       36 天前
    当我没问..就是个 base32, 原来是巨硬的 authenticator 不支持 sha256 的问题.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2775 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 15:08 · PVG 23:08 · LAX 07:08 · JFK 10:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.