sslstr.cgi
上传用户:lyxiangda
上传日期:2007-01-12
资源大小:3042k
文件大小:9k
源码类别:

CA认证

开发平台:

WINDOWS

  1. #!/usr/bin/perl
  2. #
  3. # The contents of this file are subject to the Mozilla Public
  4. # License Version 1.1 (the "License"); you may not use this file
  5. # except in compliance with the License. You may obtain a copy of
  6. # the License at http://www.mozilla.org/MPL/
  7. # Software distributed under the License is distributed on an "AS
  8. # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
  9. # implied. See the License for the specific language governing
  10. # rights and limitations under the License.
  11. # The Original Code is the Netscape security libraries.
  12. # The Initial Developer of the Original Code is Netscape
  13. # Communications Corporation.  Portions created by Netscape are 
  14. # Copyright (C) 1994-2000 Netscape Communications Corporation.  All
  15. # Rights Reserved.
  16. # Contributor(s):
  17. # Alternatively, the contents of this file may be used under the
  18. # terms of the GNU General Public License Version 2 or later (the
  19. # "GPL"), in which case the provisions of the GPL are applicable 
  20. # instead of those above.  If you wish to allow use of your 
  21. # version of this file only under the terms of the GPL and not to
  22. # allow others to use your version of this file under the MPL,
  23. # indicate your decision by deleting the provisions above and
  24. # replace them with the notice and other provisions required by
  25. # the GPL.  If you do not delete the provisions above, a recipient
  26. # may use your version of this file under either the MPL or the
  27. # GPL.
  28. #
  29. use CGI qw(:standard);
  30. # Replace this will the full path to the sslstrength executable.
  31. $sslstrength = "./sslstrength";
  32. # Replace this with the name of this CGI.
  33. $sslcgi = "sslstr.cgi";
  34. $query = new CGI;
  35. print header;
  36. print "<HTML><HEAD>
  37. <SCRIPT language='javascript'>
  38. function doexport(form) {
  39.     form.ssl2ciphers.options[0].selected=0;
  40.     form.ssl2ciphers.options[1].selected=0;
  41.     form.ssl2ciphers.options[2].selected=0;
  42.     form.ssl2ciphers.options[3].selected=0;
  43.     form.ssl2ciphers.options[4].selected=1;
  44.     form.ssl2ciphers.options[5].selected=1;
  45.     form.ssl3ciphers.options[0].selected=1;
  46.     form.ssl3ciphers.options[1].selected=1;
  47.     form.ssl3ciphers.options[2].selected=0;
  48.     form.ssl3ciphers.options[3].selected=1;
  49.     form.ssl3ciphers.options[4].selected=1;
  50.     form.ssl3ciphers.options[5].selected=1;
  51.     form.ssl3ciphers.options[6].selected=0;
  52.     form.ssl3ciphers.options[7].selected=0;
  53. }
  54. function dodomestic(form) {
  55.     form.ssl2ciphers.options[0].selected=1;
  56.     form.ssl2ciphers.options[1].selected=1;
  57.     form.ssl2ciphers.options[2].selected=1;
  58.     form.ssl2ciphers.options[3].selected=1;
  59.     form.ssl2ciphers.options[4].selected=1;
  60.     form.ssl2ciphers.options[5].selected=1;
  61.     form.ssl3ciphers.options[0].selected=1;
  62.     form.ssl3ciphers.options[1].selected=1;
  63.     form.ssl3ciphers.options[2].selected=1;
  64.     form.ssl3ciphers.options[3].selected=1;
  65.     form.ssl3ciphers.options[4].selected=1;
  66.     form.ssl3ciphers.options[5].selected=1;
  67.     form.ssl3ciphers.options[6].selected=1;
  68.     form.ssl3ciphers.options[7].selected=1;
  69. }
  70. function doclearssl2(form) {
  71.     form.ssl2ciphers.options[0].selected=0;
  72.     form.ssl2ciphers.options[1].selected=0;
  73.     form.ssl2ciphers.options[2].selected=0;
  74.     form.ssl2ciphers.options[3].selected=0;
  75.     form.ssl2ciphers.options[4].selected=0;
  76.     form.ssl2ciphers.options[5].selected=0;
  77. }
  78. function doclearssl3(form) {
  79.     form.ssl3ciphers.options[0].selected=0;
  80.     form.ssl3ciphers.options[1].selected=0;
  81.     form.ssl3ciphers.options[2].selected=0;
  82.     form.ssl3ciphers.options[3].selected=0;
  83.     form.ssl3ciphers.options[4].selected=0;
  84.     form.ssl3ciphers.options[5].selected=0;
  85.     form.ssl3ciphers.options[6].selected=0;
  86.     form.ssl3ciphers.options[7].selected=0;
  87. }
  88. function dohost(form,hostname) {
  89.     form.host.value=hostname;
  90.     }
  91. </SCRIPT>
  92. <TITLE>n";
  93. print "SSLStrengthn";
  94. print "</TITLE></HEAD>n";
  95. print "<h1>SSLStrength</h1>n";
  96. if ($query->param('dotest')) {
  97.     print "Output from sslstrength: n";
  98.     print "<pre>n";
  99.     $cs = "";
  100.     
  101.     @ssl2ciphers = $query->param('ssl2ciphers');
  102.     for $cipher (@ssl2ciphers) {
  103. if ($cipher eq "SSL_EN_RC2_128_WITH_MD5")              { $cs .= "a"; }
  104. if ($cipher eq "SSL_EN_RC2_128_CBC_WITH_MD5")          { $cs .= "b"; }
  105. if ($cipher eq "SSL_EN_DES_192_EDE3_CBC_WITH_MD5")     { $cs .= "c"; }
  106. if ($cipher eq "SSL_EN_DES_64_CBC_WITH_MD5")           { $cs .= "d"; }
  107. if ($cipher eq "SSL_EN_RC4_128_EXPORT40_WITH_MD5")     { $cs .= "e"; }
  108. if ($cipher eq "SSL_EN_RC2_128_CBC_EXPORT40_WITH_MD5") { $cs .= "f"; }
  109.     }
  110.     @ssl3ciphers = $query->param('ssl3ciphers');
  111.     for $cipher (@ssl3ciphers) {
  112. if ($cipher eq "SSL_RSA_WITH_RC4_128_MD5")           { $cs .= "i"; }
  113. if ($cipher eq "SSL_RSA_WITH_3DES_EDE_CBC_SHA")      { $cs .= "j"; }
  114. if ($cipher eq "SSL_RSA_WITH_DES_CBC_SHA")           { $cs .= "k"; }
  115. if ($cipher eq "SSL_RSA_EXPORT_WITH_RC4_40_MD5")     { $cs .= "l"; }
  116. if ($cipher eq "SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5") { $cs .= "m"; }
  117. if ($cipher eq "SSL_RSA_WITH_NULL_MD5")              { $cs .= "o"; }
  118. if ($cipher eq "SSL_RSA_FIPS_WITH_3DES_EDE_CBC_SHA") { $cs .= "p"; }
  119. if ($cipher eq "SSL_RSA_FIPS_WITH_DES_CBC_SHA")      { $cs .= "q"; }
  120.     }
  121.     $hs = $query->param('host');
  122.     if ($hs eq "") {
  123. print "</pre>You must specify a host to connect to.<br><br>n";
  124. exit(0);
  125.     }
  126.     $ps = $query->param('policy');
  127.     
  128.     $cmdstring = "$sslstrength $hs policy=$ps ciphers=$cs";
  129.     print "running sslstrength:n";
  130.     print "$cmdstringn";
  131.     $r = open(SSLS, "$cmdstring |");
  132.     if ($r == 0) {
  133. print "<pre>There was a problem starting $cmdstring<br><br>n";
  134. exit(0);
  135.     }
  136.     while (<SSLS>) {
  137. print "$_";
  138.     }
  139.     close(SSLS);
  140.     print "</pre>n";
  141.    
  142. }
  143. else {
  144. print "<FORM method=post action=$sslcgi>n";
  145. print "<hr>
  146. <h2>Host Name</h2>
  147. <TABLE BORDER=0 CELLPADDING=20>
  148. <TR>
  149. <TD>
  150. Type hostname here:<br>
  151. <input type=text name=host size=30>&nbsp;<br><br>
  152. <TD>
  153.  <b>Or click these buttons to test some well-known servers</b><br>
  154.  <TABLE BORDER=0>
  155.  <TR>
  156.  <TD>
  157.  Export servers:
  158.  <TD>
  159.  <input type=button value='F-Tech' onclick=dohost(this.form,'strongbox.ftech.net')>
  160.  </TR>
  161.  <TR>
  162.  <TD>
  163.  Domestic servers:
  164.  <TD>
  165.  <input type=button value='Wells Fargo' onclick=dohost(this.form,'banking.wellsfargo.com')>
  166.  </TR>
  167.  <TR>
  168.  <TD>
  169.  Step-Up Servers
  170.  <TD>
  171.  <input type=button value='Barclaycard' onclick=dohost(this.form,'enigma.barclaycard.co.uk')>
  172.  <input type=button value='BBVnet' onclick=dohost(this.form,'www.bbvnet.com')>&nbsp;
  173.  <input type=button value='BHIF' onclick=dohost(this.form,'empresas.bhif.cl')>&nbsp;
  174.  </TR>
  175.  </TABLE>
  176. </TR>
  177. </TABLE>
  178. <br>
  179. <hr>
  180. <br>
  181. <h2>Encryption policy</h2>
  182. <input type=radio name=policy VALUE=export            onclick=doexport(this.form)>&nbsp;
  183. Export<br>
  184. <input type=radio name=policy VALUE=domestic CHECKED  onclick=dodomestic(this.form)>&nbsp;
  185. Domestic<br>
  186. <br>
  187. <hr>
  188. <br>
  189. <h2>Cipher Selection</h2>
  190. (use ctrl to multi-select)<br>
  191. <table>
  192. <tr>
  193. <td>SSL 2 Ciphers
  194. <td>
  195. <SELECT NAME=ssl2ciphers SIZE=6 MULTIPLE align=bottom>
  196. <OPTION SELECTED>SSL_EN_RC4_128_WITH_MD5
  197. <OPTION SELECTED>SSL_EN_RC2_128_CBC_WITH_MD5
  198. <OPTION SELECTED>SSL_EN_DES_192_EDE3_CBC_WITH_MD5
  199. <OPTION SELECTED>SSL_EN_DES_64_CBC_WITH_MD5
  200. <OPTION SELECTED>SSL_EN_RC4_128_EXPORT40_WITH_MD5
  201. <OPTION SELECTED>SSL_EN_RC2_128_CBC_EXPORT40_WITH_MD5
  202. </SELECT>
  203. <input type=button Value='Clear all' onclick = 'doclearssl2(this.form)'>
  204. </tr>
  205. <tr>
  206. <td>SSL3 Ciphers
  207. <td>
  208. <SELECT NAME=ssl3ciphers SIZE=8 MULTIPLE>
  209. <OPTION SELECTED>SSL_RSA_WITH_RC4_128_MD5
  210. <OPTION SELECTED>SSL_RSA_WITH_3DES_EDE_CBC_SHA
  211. <OPTION SELECTED>SSL_RSA_WITH_DES_CBC_SHA
  212. <OPTION SELECTED>SSL_RSA_EXPORT_WITH_RC4_40_MD5
  213. <OPTION SELECTED>SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5
  214. <OPTION SELECTED>SSL_RSA_WITH_NULL_MD5
  215. <OPTION SELECTED>SSL_RSA_FIPS_WITH_3DES_EDE_CBC_SHA
  216. <OPTION SELECTED>SSL_RSA_FIPS_WITH_DES_CBC_SHA
  217. </SELECT>
  218. <input type=button value='Clear all' onclick = 'doclearssl3(this.form)'>
  219. <TD>
  220. <input type=submit name=dotest value='Run SSLStrength'>
  221. </tr>
  222. </table>
  223. <input type=hidden name=dotest>
  224. <br>
  225. <br>
  226. </form>
  227. n";
  228. }
  229. exit(0);
  230. __END__
  231.  id    CipherName                                     Domestic     Export      
  232.  a     SSL_EN_RC4_128_WITH_MD5              (ssl2)    Yes          No          
  233.  b     SSL_EN_RC2_128_CBC_WITH_MD5          (ssl2)    Yes          No          
  234.  c     SSL_EN_DES_192_EDE3_CBC_WITH_MD5     (ssl2)    Yes          No          
  235.  d     SSL_EN_DES_64_CBC_WITH_MD5           (ssl2)    Yes          No          
  236.  e     SSL_EN_RC4_128_EXPORT40_WITH_MD5     (ssl2)    Yes          Yes         
  237.  f     SSL_EN_RC2_128_CBC_EXPORT40_WITH_MD5 (ssl2)    Yes          Yes         
  238.  i     SSL_RSA_WITH_RC4_128_MD5             (ssl3)    Yes          Step-up only
  239.  j     SSL_RSA_WITH_3DES_EDE_CBC_SHA        (ssl3)    Yes          Step-up only
  240.  k     SSL_RSA_WITH_DES_CBC_SHA             (ssl3)    Yes          No          
  241.  l     SSL_RSA_EXPORT_WITH_RC4_40_MD5       (ssl3)    Yes          Yes         
  242.  m     SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5   (ssl3)    Yes          Yes         
  243.  o     SSL_RSA_WITH_NULL_MD5                (ssl3)    Yes          Yes