9xrtp7r1
V2EX  ›  问与答

请问我在 startSSL 申请的免费证书,能用来制作双向认证的证书吗?

  •  
  •   9xrtp7r1 · Mar 24, 2015 · 5767 views
    This topic created in 4109 days ago, the information mentioned may be changed or developed.

    我在startSSL申请了一个免费数字证书,已经部署成功,可以让网站正常访问了

    因为这个网站是内部的系统,不希望外部的人访问到

    所以我想用 双向认证, 但是我不会弄

    网上的教程都是教 要自己做ca,可是 这样的话 浏览器就不认识了,需要把自己的ca加入信任,但我怕ca被盗,会给我们的用户带来麻烦

    所以请问大家,这个start申请来的ssl证书可以制作双向认证吗?

    或者 你有其他更好的办法来实现,限制外部人员的访问吗

    网站的入口就是一个登陆页面。所以才不希望任何没有授权的人访问

    谢谢大家

    29 replies    2015-03-26 03:55:23 +08:00
    xenme
        1
    xenme  
       Mar 24, 2015
    免费的不行,你需要的是中级证书。
    http://www.startssl.com/?app=5
    sarices
        2
    sarices  
       Mar 24, 2015
    搭个话,问问
    自签证书可不可以做双向?
    双向证书是不是有证书的客户端才能访问?
    客户的证书是不是所有客户都用同一个?
    谢谢
    wzxjohn
        3
    wzxjohn  
       Mar 24, 2015
    @sarices 自签可以双向,只是系统默认不信任而已。
    publicID001
        4
    publicID001  
       Mar 24, 2015 via Android
    可以 让你的所有客户申请一个Startcom的email证书,客户用你网站的证书验证你的身份,你用客户的email证书验证客户身份
    julyclyde
        5
    julyclyde  
       Mar 24, 2015
    可以双向。要求客户端出示 指定CA签发的 证书
    NewYear
        6
    NewYear  
       Mar 24, 2015
    我以前也想过这个问题,双向认证真的算是一个很赞的方案。

    关注。
    9xrtp7r1
        7
    9xrtp7r1  
    OP
       Mar 24, 2015
    @xenme 谢谢您,我看页面好像写2美元一个, 我目前用的免费证书,如果用这个中级的证书需要多少钱,一个客户端给2美元就可以了吗。这个证书本身需要多少钱呢 [我英语不太好] 找了半天 也没有找到入口
    9xrtp7r1
        8
    9xrtp7r1  
    OP
       Mar 24, 2015
    @sarices 自己搭建 浏览器会提示 危险,但你可以把自建的加入浏览器的信任里面 就不提醒了 ,但是如果你的ca根证书被盗,那可能就会带来很可怕的风险
    9xrtp7r1
        9
    9xrtp7r1  
    OP
       Mar 24, 2015
    @publicID001 哦哦 那需要钱吗 有教程吗, 用什么关键词去搜索这方面的教程呢 谢谢您
    9xrtp7r1
        10
    9xrtp7r1  
    OP
       Mar 24, 2015
    @julyclyde 谢谢
    47jm9ozp
        11
    47jm9ozp  
       Mar 24, 2015
    可以双向认证

    startssl的证书用来客户认证服务器,服务器认证客户可以用另一套ca/证书组合
    9xrtp7r1
        12
    9xrtp7r1  
    OP
       Mar 24, 2015
    @ooxxcc 谢谢 请问如何设置呢,有对应教程吗 或者我应该用什么关键词去搜对应的教程呢 谢谢您
    vibbow
        13
    vibbow  
       Mar 24, 2015
    47jm9ozp
        14
    47jm9ozp  
       Mar 24, 2015
    @9xrtp7r1 你用的什么服务端?

    nginx的话,大概这样的

    ssl_certificate <startssl cert>
    ssl_certificate_key <private key>

    ssl_client_certificate <self-signed ca cert>
    ssl_verify_client on

    搜一下有很多教程
    imnpc
        15
    imnpc  
       Mar 24, 2015
    好像需要将证书转换为pfx?然后双向认证
    publicID001
        16
    publicID001  
       Mar 24, 2015 via Android
    @9xrtp7r1 不要,就和你登录startssl的证书一样,也给客户申请这种证书就行。

    关键词类似apache/php证书认证 等 13楼也提到了。

    另外楼上说的中级根不是大企业基本不用想了,不是一般的贵和麻烦,而且这是为了自己签发用的,你这个让客户直接找startssl就好。
    9xrtp7r1
        17
    9xrtp7r1  
    OP
       Mar 24, 2015
    @vibbow


    谢谢 我用的 nginx ,目前网站是ssl访问的,用的是startssl的免费证书,但我不知道如何弄成双向认证,以前我用自己签发ca 签发客户端 ,服务器证书的方式实现过双向认证;但它显示不信任,所以我想用 系统信任的证书机构的证书来实现 双向认证
    9xrtp7r1
        18
    9xrtp7r1  
    OP
       Mar 24, 2015
    @ooxxcc 谢谢 我用的 nginx ,目前网站是ssl访问的,用的是startssl的免费证书,但我不知道如何弄成双向认证,以前我用自己签发ca 签发客户端 ,服务器证书的方式实现过双向认证;但它显示不信任,所以我想用 系统信任的证书机构的证书来实现 双向认证
    9xrtp7r1
        19
    9xrtp7r1  
    OP
       Mar 24, 2015
    @publicID001 谢谢您的再次回复, 目前用我们网站的客户数量就6个左右,不多,并且以后也不会很多的,因为是内部用, 您的意思是 我去startssl给每个客户申请一个证书吗, 如果我给每个客户申请了证书,如果再服务器上 验证他们的身份呢,我用的 nginx , 我想应该要让nginx获取客户提交的证书的某些信息,如果符合就放行,否则就拦截, 我不太了解如何在nginx上设置鉴权,您是否有办法呢
    yangff
        20
    yangff  
       Mar 24, 2015 via Android
    。。你自签一个root ca,然后把双向验证的证书弄好,把root ca的key删掉,把造root ca的服务器砸了烧掉,问题解决。
    47jm9ozp
        21
    47jm9ozp  
       Mar 24, 2015
    @9xrtp7r1 按我14楼给的配置就好,或者参照你原本的配置,只要把 ssl_certificate 改成startssl签发的证书就好,ssl_certificate_key改为配套的私钥,其他不用动
    9xrtp7r1
        22
    9xrtp7r1  
    OP
       Mar 24, 2015
    @ooxxcc 谢谢 我试试 ,那这样 会不会 其他人 申请一个 startssl的证书 也能访问我的网站呀
    vibbow
        23
    vibbow  
       Mar 24, 2015
    @9xrtp7r1 所以需要你在应用层,或者apache/nginx那里检查客户端证书
    9xrtp7r1
        24
    9xrtp7r1  
    OP
       Mar 24, 2015
    @vibbow 哦哦 我就是想让nginx帮我检查证书,如果正确,就让通过, 否则就什么都不返回,



    我设想的, 给客户的证书,他们的邮箱都是 公司域名邮箱, @后面的后缀是 公司的域名, 如果写代码判断,只要获取客户证书里面的邮箱 判断是不是 公司的域名,就可以完成验证,.

    但我不知道 如何在nginx里面做这个判断逻辑, 也不知道如何获取客户证书的信息
    vibbow
        25
    vibbow  
       Mar 24, 2015
    @9xrtp7r1 如果是你给客户证书,那么八成是你自签名的证书了。
    那你第一步要做的是按照我前面博客上的教程,把你自签名证书的CA添加到系统证书库里。

    然后我在Apache里是这样认证的,不确定Nginx里怎么写:

    <VirtualHost *:443>
    ..............

    SSLEngine on
    Header add Strict-Transport-Security: "max-age=15768000"

    SSLVerifyClient require
    SSLVerifyDepth 10
    SSLOptions +StdEnvVars

    <Location />
    SSLRequire %{SSL_CLIENT_I_DN_O} eq "WoSign CA Limited" \
    and %{SSL_CLIENT_S_DN_Email} eq "[email protected]"
    </Location>
    </VirtualHost>

    这样Apache就会进行双向认证,同时检查客户端SSL证书必须是WoSign颁发给我这个邮箱的。
    47jm9ozp
        26
    47jm9ozp  
       Mar 24, 2015
    @9xrtp7r1 你还是没弄懂,服务端认证客户端用的是你自己签发的CA。。。。就不是startssl那套了
    9xrtp7r1
        27
    9xrtp7r1  
    OP
       Mar 24, 2015
    @ooxxcc 哦哦 如此的话,那我和服务器连接的时候用的是startssl的证书吗,如果自己签发的话,那浏览器上面就不会显示绿色的哦 就会说没有信任
    SharkIng
        28
    SharkIng  
       Mar 25, 2015
    @9xrtp7r1 oxxcc说的是,你浏览器验证,就是客户在访问你网站的时候,你是使用的是StartSSL的证书,然后需要认证 的时候,你使用的是你自己的CA证书,这两个是互不影响的
    9xrtp7r1
        29
    9xrtp7r1  
    OP
       Mar 26, 2015
    @SharkIng 非常感谢
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5661 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 105ms · UTC 06:35 · PVG 14:35 · LAX 23:35 · JFK 02:35
    ♥ Do have faith in what you're doing.