안녕하세요...
현재 웹서비스를 구현 작업을 하고 있습니다.
최종 목적은 클라이언트의 인증서에서 CN값을 뽑아와야 합니다.
현재 os는 windows xp pro입니다.
궁금한 사항 : windows xp pro And windows 2000에서 웹서버에서 서버인증서를 사용할 수 있나요?
서버인증서 발급 : 현재 서버 인증서를 makecert으로 해서 만들었습니다.
클라이언트 인증서 : 현재 클라이언트 인증서를 makecert으로 만들었습니다.
마소 참조해서...
makecert -n “CN=WSE_Server” -sky exchange -pe -ss My -sr localmachine WSE_Server.cer
makecert -n “CN=WSE_Client” -sky exchange -pe -ss My WSE_Client.cer
windows xp pro and windows 2000 pro에서 이렇게 해서 사용해도 될까요?
왜냐하면, msdn을 보며는
http://support.microsoft.com/default.aspx?scid=kb%3Bko%3B218445 인증서버에서 인증서를 받아야한다고 하는데..
현재 windows xp pro에서 http://localhost/certsrv/페이지가 나오지 않고요...
그리고, makecert으로 만든 인증서를 사용해서,,,,
클라이언트에서 , 서버로 인증서를 보냈을 때, 서버쪽에서 클라이언트의 정보를 갖고 있지 않네요..
클라이언트 측 코드
localhost.CCWebservice objws ;
objws = new localhost.CCWebservice();
X509Certificate objCert ;
objCert = X509Certificate.CreateFromCertFile("C:\\WSE_Client.cer");
objws.ClientCertificates.Add(objCert) ;
localhost.ClientCertificateDetails objCertDetails;
objCertDetails = objws.GetCertificateDetails();// -> 웹서비스 호출.
디버그에서 objCert에 클라이언트 인증서에 대한 정보가 있음.
서버측
[SoapDocumentMethod(Binding="CCWebservice")]
[WebMethod]
public ClientCertificateDetails GetCertificateDetails()
{
HttpClientCertificate objCertificate = HttpContext.Current.Request.ClientCertificate ;
ClientCertificateDetails objCertificateDetails = new ClientCertificateDetails() ;
objCertificateDetails.Cookie = objCertificate.Cookie ;
objCertificateDetails.IsPresent = objCertificate.IsPresent ;
objCertificateDetails.Issuer = objCertificate.Issuer ;
objCertificateDetails.IsValid = objCertificate.IsValid ;
objCertificateDetails.KeySize = objCertificate.KeySize ;
objCertificateDetails.SecretKeySize = objCertificate.SecretKeySize ;
objCertificateDetails.SerialNumber = objCertificate.SerialNumber ;
objCertificateDetails.ServerIssuer = objCertificate.ServerIssuer ;
objCertificateDetails.ServerSubject = objCertificate.ServerSubject ;
objCertificateDetails.ValidFrom = objCertificate.ValidFrom ;
objCertificateDetails.ValidUntil = objCertificate.ValidUntil ;
if (objCertificate.IsPresent)--> 데이타가 없음.
{
System.Security.Cryptography.X509Certificates.X509Certificate cert =
new System.Security.Cryptography.X509Certificates.X509Certificate(objCertificate.Certificate);
string str = cert.GetName();
// third check is to ensure that the certificate is valid
String stText = String.Format("Hello {0}, your certificate is{1}valid",
cert.GetName(), objCertificate.IsValid ? String.Empty : " NOT");
}
그럼 수고하세요...ㅠㅠ
[최초 등록일: ]
[최종 수정일: 8/28/2006]