现在公司需要做一个https代理服务器。但小弟以前没接触过https,对于https的一些原理不是很清楚,还有代理服务器上的证书我该怎么获取以及如何让第三方服务器信任我的代理服务器,还是我根本不用在代理服务器这边考虑这个。
请大虾们讲解一下https原理及https代理服务器的思路,小弟不胜感谢!!!!!!

解决方案 »

  1.   

    我每次访问https站点时,需要等待好久然后才有点反映,结果就是出现了上面图中的页面。我总不能每访问一下站点就添加一个信任吧而且有时还会有如下异常,是怎么回事呢????javax.net.ssl.SSLHandshakeException: Received fatal alert: unknown_ca
    at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:174)
    at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:136)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1774)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:954)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1138)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:753)
    at com.sun.net.ssl.internal.ssl.AppInputStream.read(AppInputStream.java:75)
    at com.fainfy.nps4j.https.StreamThread.run(StreamThread.java:58)
    at java.lang.Thread.run(Thread.java:662)
    javax.net.ssl.SSLHandshakeException: Received fatal alert: unknown_ca
    at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:174)
    at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:136)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1774)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:954)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1138)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:753)
    at com.sun.net.ssl.internal.ssl.AppInputStream.read(AppInputStream.java:75)
    at com.fainfy.nps4j.https.StreamThread.run(StreamThread.java:58)
    at java.lang.Thread.run(Thread.java:662)
      

  2.   

    https 就是 http+ssl。 要实现一个https服务器就需要证书,这个证书可以是自己生成的,也可以是CA机制颁发的(当然是需要很大一笔money)。自己实现的一般的浏览器是不认的,因为生成此证书的root证书是你自己的,并不在浏览器的信任列表中(当然你可以加入到信任列表中)。