V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
Rocketer
V2EX  ›  程序员

以字符串形式存储证书,密码还有用吗?

  •  
  •   Rocketer · 2021-03-11 03:13:33 +08:00 · 2815 次点击
    这是一个创建于 1380 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有些证书的私钥是有密码保护的,使用时需要输入密码。

    现在我要把证书以字符串的形式存到数据库里,那么我是必须存储解密后的证书文本,还是可以直接原样存储证书的文本,保持密码呢?

    对这一块不太懂,求指点,谢谢

    16 条回复    2021-03-11 13:52:55 +08:00
    FucUrFrd
        1
    FucUrFrd  
       2021-03-11 03:17:59 +08:00 via Android
    要 binary 不能是 string, 保持密码,完结。
    Rocketer
        2
    Rocketer  
    OP
       2021-03-11 04:42:29 +08:00
    @FucUrFrd 不好意思,没看懂。

    我知道无密码的证书就是纯文本的,你的意思是有密码的证书是二进制吗?所以我如果存储字符串,就肯定是解密后的了?
    msg7086
        3
    msg7086  
       2021-03-11 04:49:25 +08:00 via Android
    都可以。反正都能储存成文本编码的形式。
    FucUrFrd
        4
    FucUrFrd  
       2021-03-11 05:06:41 +08:00 via Android
    @Rocketer der,pfx 证书就是二进制的,不要烦,一把梭,设计一开始你就要考虑兼容性,万一输入 pfx 难道整个系统推倒重来么
    Rocketer
        5
    Rocketer  
    OP
       2021-03-11 05:56:27 +08:00
    @FucUrFrd 文本型字段是件确定了的事,如果非要存储二进制,那就转成 base64 编码存储。

    我不是证书的使用人,所以我也不太懂,我只负责存储。我就是想知道是不是必须要保存密码。
    ratazzi
        6
    ratazzi  
       2021-03-11 08:10:09 +08:00 via iPhone
    存储解密后的证书就不需要存密码了,但是为了安全要考虑使用信封加密,被脱裤少一点风险
    zhyl
        7
    zhyl  
       2021-03-11 08:33:07 +08:00 via iPhone
    存密码你是存 hash 后的还是原密码呢,证书密钥同理
    ratazzi
        8
    ratazzi  
       2021-03-11 08:44:06 +08:00 via iPhone
    @zhyl 跟密码可完全不一样,证书你给 hash 了还怎么用
    jorneyr
        9
    jorneyr  
       2021-03-11 09:08:14 +08:00
    字符串只是证书二进制的展示形式,方便传输和复制粘贴
    imdong
        10
    imdong  
       2021-03-11 09:34:41 +08:00
    安全考虑,不要存密码了。

    至于字符串和二进制,怎么方便怎么来,反正都能搞定。

    如果有密码就在使用的时候再输入,这样玩意数据泄漏后多少还能安全点。
    zhyl
        11
    zhyl  
       2021-03-11 09:59:51 +08:00
    @ratazzi 只是类比,没让你存哈希后的证书,而是存加密后的证书,用的时候用密钥解密一下不就行了?
    eason1874
        12
    eason1874  
       2021-03-11 11:23:16 +08:00
    直接存证书本身。

    如果不是字符串,转换一下进制不就可以了吗?取出来的时候再转回去,然后解密。
    FucUrFrd
        13
    FucUrFrd  
       2021-03-11 12:24:49 +08:00 via Android
    跟你们码农沟通真他么累,MySQL blob 类型管你什么类型,直接存进去就得了,不需要转换,你是 string 就 varchar,随便你吧
    Rocketer
        14
    Rocketer  
    OP
       2021-03-11 12:35:07 +08:00 via iPhone
    @FucUrFrd 我可没说我是用数据库存储的。

    我已经反复说必须是字符串了,而你从一开始就坚持跑题,我不跟着你跑你还烦躁,你吃枪药了吗?
    annielong
        15
    annielong  
       2021-03-11 12:53:15 +08:00
    加密码的证书应该是用密码再次加密了吧,导入时候根据密码解密,单独保存要么两个字段一个存证书一个存密码,要么只存解密后的证书
    hxndg
        16
    hxndg  
       2021-03-11 13:52:55 +08:00
    @FucUrFrd
    考虑兼容性问题就一把梭可还行,追求兼容性不追求通用性了?

    @Rocketer
    按照道理,证书和私钥分开保存。无论是 PFX 还是 DER 的 FORMAT 的证书都直接转成 PEM 的容器类型保存,读入的时候 d2i 或者 i2d 的转换一下就成。
    私钥就需要单独加密存储了。

    你们在做秘钥管理吗?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5394 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 08:02 · PVG 16:02 · LAX 00:02 · JFK 03:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.