我应该帮助用户生成私钥吗? - V2EX
sneezry

我应该帮助用户生成私钥吗?

  •  
  •   sneezry Aug 26, 2016 3691 views
    This topic created in 3550 days ago, the information mentioned may be changed or developed.
    前些天我发布了业余时间开发的小玩意( https://ssl.md ),来帮助不会 /不愿意部署 acme 脚本的用户签发 Let's Encrypt 的证书。但我发现到目前为止只成功签发出两张证书 Orz

    从 log 来看,基本都是用户生成的 CSR 有问题导致签发失败,有的用户尝试了好多次都没有成功。在我设计这个网站的时候没有使用现成的 acme 脚本,就是因为这些脚本会自动生成私钥及 CSR 签发证书,而我掌握了用户的私钥显然是不合理的,所以我自己研究 acme 文档重写了一个脚本来签发证书。现在我在怀疑自己的决定是否是正确的,毕竟这个网站的初衷就是帮助对业务不熟练的用户快速签发证书,现在反而还需要他们自己学习 CSR 相关的知识。
    18 replies    2016-08-27 10:42:48 +08:00
    kn007
        1
    kn007  
       Aug 26, 2016
    我倒是觉得无所谓。。。
    popu111
        2
    popu111  
       Aug 26, 2016
    现在最大的问题是我登不上=。= 环境: Chrome 52.0.2743.116 m + Win10.10240
    wql
        3
    wql  
       Aug 26, 2016 via Android
    不要在后台生成证书。如果你是用浏览器的 WebCrypto API 的话当我没说。
    songjiaxin2008
        4
    songjiaxin2008  
       Aug 26, 2016
    两个选项都提供就好啦
    pubby
        5
    pubby  
       Aug 26, 2016
    给个桌面端 CSR 生成工具的下载地址就行,有时候确是懒得自己输命令行
    mornlight
        6
    mornlight  
       Aug 26, 2016
    我的是 NS 记录一直不生效,不知道咋回事, CloudXNS
    jybox
        7
    jybox  
       Aug 26, 2016
    可以在浏览器端帮用户生成,用浏览器的 API 提供给用户下载,私不经过到你的服务器。
    anyclue
        8
    anyclue  
       Aug 27, 2016   1
    能自动生成 CSR 和私钥的就做成了 sslforfree.com ,需要用户手动生成的就做成了 gethttpsforfree.com
    现在的情况就跟 gethttpsforfree.com 一样,甚至还不如它细致

    我觉得既然真想做就要求同存异从 CSR 入手。既然大家 CSR 的生成都有问题,那就绝对步骤清晰准确、让用户不留疑惑的、一个页面一个页面的引导大家怎样正常的生成 CSR 。只要用你的站申请 LE 证书,傻子都能申请下来,这才是追求的终极引导过程。

    一直担心的 CSR 和私钥是网站生成还是让用户自己生成,说到底还是信任问题。不建议从这方面入手,因为对你的站没人敢信,再加上干这行都有点洁癖,就算你号称怎么安全我估计还是有人不敢信。我觉得还是设法让用户自己生成合适,重在流程上怎么引导让他每一步都能正确操作,又比开头两个站好用,这样的方向才有出路。
    sneezry
        9
    sneezry  
    OP
       Aug 27, 2016
    @mornlight 确实找不到哎

    sneezry@ZHELI-X1:~$ dig ns _acme-challenge.gexiao.me

    ; <<>> DiG 9.9.5-3ubuntu0.8-Ubuntu <<>> ns _acme-challenge.gexiao.me
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 41770
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

    ; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 1280
    ;; QUESTION SECTION:
    ;_acme-challenge.gexiao.me. IN NS

    ;; Query time: 624 msec
    ;; SERVER: 192.168.1.1#53(192.168.1.1)
    ;; WHEN: Sat Aug 27 01:49:30 DST 2016
    ;; MSG SIZE rcvd: 54
    sneezry
        10
    sneezry  
    OP
       Aug 27, 2016
    @mornlight 我把 motedown.com 转到了 CloudXNS ,测试 NS 是正常的

    sneezry@ZHELI-X1:~$ dig ns motedown.com

    ; <<>> DiG 9.9.5-3ubuntu0.8-Ubuntu <<>> ns motedown.com
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37593
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 12

    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 1280
    ;; QUESTION SECTION:
    ;motedown.com. IN NS

    ;; ANSWER SECTION:
    motedown.com. 172800 IN NS lv3ns1.ffdns.net.
    motedown.com. 172800 IN NS lv3ns4.ffdns.net.
    motedown.com. 172800 IN NS lv3ns3.ffdns.net.
    motedown.com. 172800 IN NS lv3ns2.ffdns.net.

    ;; ADDITIONAL SECTION:
    lv3ns1.ffdns.net. 1037 IN A 122.228.198.140
    lv3ns1.ffdns.net. 1037 IN A 183.131.161.70
    lv3ns1.ffdns.net. 1037 IN A 119.97.137.185
    lv3ns1.ffdns.net. 1037 IN A 221.204.224.122
    lv3ns1.ffdns.net. 1037 IN A 54.153.30.23
    lv3ns1.ffdns.net. 1037 IN A 113.6.235.74
    lv3ns1.ffdns.net. 1037 IN A 117.169.16.171
    lv3ns1.ffdns.net. 1037 IN A 113.207.30.193
    lv3ns4.ffdns.net. 170237 IN A 42.236.6.154
    lv3ns3.ffdns.net. 170237 IN A 14.18.142.102
    lv3ns2.ffdns.net. 170237 IN A 221.204.224.83

    ;; Query time: 198 msec
    ;; SERVER: 192.168.1.1#53(192.168.1.1)
    ;; WHEN: Sat Aug 27 01:56:35 DST 2016
    ;; MSG SIZE rcvd: 310

    sneezry@ZHELI-X1:~$ dig ns _acme-challenge.motedown.com

    ; <<>> DiG 9.9.5-3ubuntu0.8-Ubuntu <<>> ns _acme-challenge.motedown.com
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7672
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 3

    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 1280
    ;; QUESTION SECTION:
    ;_acme-challenge.motedown.com. IN NS

    ;; ANSWER SECTION:
    _acme-challenge.motedown.com. 540 IN NS acme.ssl.md.

    ;; ADDITIONAL SECTION:
    acme.ssl.md. 79 IN A 168.235.79.202
    acme.ssl.md. 63 IN AAAA 2604:180:3:51b::a2c4

    ;; Query time: 78 msec
    ;; SERVER: 192.168.1.1#53(192.168.1.1)
    ;; WHEN: Sat Aug 27 01:57:48 DST 2016
    ;; MSG SIZE rcvd: 126
    sneezry
        11
    sneezry  
    OP
       Aug 27, 2016
    @mornlight 好像有点小 Bug ,已经修复了 =。=,顺便帮你 verify 了……
    microSD
        12
    microSD  
       Aug 27, 2016
    Let's Encrypt 目标是自动化配置,每一次续订都由脚本自动完成,你这样做是违背 LE 初衷的,更违背 PKI 的工作流程。又考虑到如果一段时间内请求过于频繁, LE 可能会限制调用 API ,注定了代为申请的做法帮不到多少人。

    你不妨编写完善、详细的配置教程,随机抽取博客读者,请求他们照着做一遍,指出存在的问题,再改进教程。

    如果只是为了自用, StartCom CA 提供的网页配置界面调用浏览器内置的功能生成私钥、上传公钥,服务器碰不到私钥。供参考。

    https://konklone.com/post/switch-to-https-now-for-free
    shyling
        13
    shyling  
       Aug 27, 2016 via iPad
    需要。什么 1password 都是帮人生成密码的
    sneezry
        14
    sneezry  
    OP
       Aug 27, 2016
    @microSD 是这样的,在写这个项目的时候我也考虑过 ACME 就是为了自动化而提出的。但毕竟不是所有的用户都有能力部署自动化脚本,也不是所有环境都支持自动化(比如 Azure Web App )。另外请问有关违背 PKI 的工作流程是在哪里呢,如果违背了 PKI 的工作流程我会改进相关步骤。非常感谢!
    UnisandK
        15
    UnisandK  
       Aug 27, 2016
    sneezry
        16
    sneezry  
    OP
       Aug 27, 2016
    @UnisandK 用他人服务器生成 CSR 还是存在被中间人的风险的,我还是觉得不应该提供这种服务 Orz
    安全和便捷总是有矛盾 :S
    UnisandK
        17
    UnisandK  
       Aug 27, 2016
    @sneezry 生成私匙不是由你提供的服务的话,锅就不在你这边了呗 doge

    我是感觉这种还好,网站不至于那么丧病生成的每个私匙都存一份偷偷拿去中间人,要是实在不放心的就让他们自己去生成呗,服务不可能让所有人都满意的
    matrix67
        18
    matrix67  
       Aug 27, 2016 via Android
    别存就好
    About     Help     Advertise     Blog     API     FAQ     Solana     2770 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 54ms UTC 01:47 PVG 09:47 LAX 18:47 JFK 21:47
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86