none
在构筑OCS的edge server时,从组织的证书WEB下载的p7b无法安装 RRS feed

  • 问题

  • 问题如题!

    我就按照technet说的,点击证书WEB的下面这个按钮,下载到一个p7b文件。显示是PKCS #7证书。
    Download CA certificate chai

    可是在导入内部server的证书的时候,却提示这个不是有效的p7b文件。这是怎么回事?

    2009年9月3日 7:01

答案

全部回复

  • http://hi.baidu.com/windowserver/blog/item/dcb372e795b8342bb93820aa.html


    http://hi.baidu.com/windowserver/blog/item/f539f616292a501d972b4317.html


    请参考落雪的文章,我以前也写过.你可以搜搜!
    也没啥说的.有空多来我的Blog看看!专注虚拟化技术! 虚拟化技术百科@http://www.vzpedia.com
    2009年9月4日 3:05
    版主
  • 许版:
    看了一下你给出的link,也没有特别的排错步骤。

    估计问题是这样的,下载下来的p7b文件有问题。
    因为在测试环境下只要下下来的p7b文件都是可以导入的。
    会不会是CA发布certsrv有问题?
    2009年9月4日 6:28
  • 我用notepad看了一下下下来的p7b文件,竟然是明文(内容如下)。这个是什么错误……

    <%@ CODEPAGE=65001 'UTF-8%>
    <%' certnew.p7b - (CERT)srv web - return a (NEW) certificate
      ' Copyright (C) Microsoft Corporation, 1998 - 1999 %>
    <!-- #include FILE=certdat.inc -->
    <!-- #include FILE=certsrck.inc -->
    <%  ' ########## BEGIN SERVER SIDE EXECUTION ##########

     'Process a Certificate Request

     Dim nDisposition, nResult, sCert, sErrMsg, nEncoding
     On Error Resume Next

     ' from \nt\public\sdk\inc\certcli.h
     Const CR_OUT_BASE64HEADER=&H00000000
     Const CR_OUT_BASE64=&H00000001
     Const CR_OUT_BINARY=&H00000002
     Const CR_OUT_CHAIN=&H00000100
     
     'Disposition code ref: \nt\public\sdk\inc\certcli.h
     Const CR_DISP_INCOMPLETE        =0
     Const CR_DISP_ERROR             =1
     Const CR_DISP_DENIED            =2
     Const CR_DISP_ISSUED            =3
     Const CR_DISP_ISSUED_OUT_OF_BAND=4
     Const CR_DISP_UNDER_SUBMISSION  =5
     Const CR_DISP_REVOKED           =6
     Const no_disp=-1

     Const CR_PROP_CASIGCERTCHAIN=13
     Const PROPTYPE_BINARY=3

     'Stop 'debugging breakpoint

     ' determine the requested encoding
     If "bin"=Request.QueryString("Enc") Then
      nEncoding=CR_OUT_BINARY
     Else '"b64"=Request.QueryString("Enc")
      nEncoding=CR_OUT_BASE64HEADER
     End If

     ' create the object to do the request
     Set Session("ICertRequest")=Server.CreateObject("CertificateAuthority.Request")
     Set ICertRequest=Session("ICertRequest")
     nDisposition=no_disp

     Err.Clear 'make sure we catch the HRESULT and not some earlier error
     
     If "CACert"=Request.QueryString("ReqID") Then
      ' get the CA cert
      sCert=ICertRequest.GetCAProperty(sServerConfig, CR_PROP_CASIGCERTCHAIN, Request.QueryString("Renewal"), PROPTYPE_BINARY, nEncoding)
      nResult=Err.Number
      sErrMsg=Err.Description

      If 0<>nResult Then
       'internal redirect - transfer control to error page
       Session("nResult")=nResult
       Session("sErrMsg")=sErrMsg
       Server.Transfer("certrser.asp")
      End If

     Else
     
      ' Fetch the user's cert
      nDisposition=ICertRequest.RetrievePending(Request.QueryString("ReqID"), sServerConfig)
      nResult=Err.Number
      sErrMsg=Err.Description
      
      If nDisposition=CR_DISP_ISSUED Then
       ' Remove this request from the user's cookie
       RemoveReq(Request.QueryString("ReqID"))

       ' retrieve the certificate
       sCert=ICertRequest.GetCertificate(nEncoding Or CR_OUT_CHAIN)
      Else
       'internal redirect - transfer control to error page
       Session("nDisposition")=nDisposition
       Session("nResult")=nResult
       Session("sErrMsg")=sErrMsg
       Server.Transfer("certrser.asp")
      End If
     End If


     ' Tell the client we are sending a cert chain
     Response.ContentType="application/x-pkcs7-certificates"

     ' send the cert chain to the client
     Response.Clear 'guarantee no extraneous bytes
     If CR_OUT_BINARY=nEncoding Then
      Response.BinaryWrite(sCert)
     Else
      Response.Write(sCert)
     End If

     
     ' ########## END SERVER SIDE EXECUTION ##########
    %>

    2009年9月5日 0:36
  • 这个问题解决了。
    是证书发布页的问题,重新构筑一次就可以了。
    2009年9月17日 1:12