<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://geeks.ms/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Marc Rubiño : https</title><link>http://geeks.ms/blogs/mrubino/archive/tags/https/default.aspx</link><description>Etiquetas: https</description><dc:language /><generator>CommunityServer 2008.5 SP1 (Build: 31106.3070)</generator><item><title>Actualizar-Generar certificado Web SSL en IIS 7</title><link>http://geeks.ms/blogs/mrubino/archive/2010/06/04/actualizar-generar-certificado-web-ssl-en-iis-7.aspx</link><pubDate>Fri, 04 Jun 2010 11:00:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:177644</guid><dc:creator>Marc Rubiño</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/mrubino/rsscomments.aspx?PostID=177644</wfw:commentRss><comments>http://geeks.ms/blogs/mrubino/archive/2010/06/04/actualizar-generar-certificado-web-ssl-en-iis-7.aspx#comments</comments><description>&lt;p align="justify"&gt;Estos d&amp;iacute;as me a tocado renovar nuestro certificado &lt;a target="_blank" href="http://es.wikipedia.org/wiki/Transport_Layer_Security"&gt;SSL&lt;/a&gt; con el proveedor &lt;strong&gt;&lt;a target="_blank" href="http://www.thawte.com/"&gt;thawte&lt;/a&gt;&lt;/strong&gt; y como no existe mucha informaci&amp;oacute;n he decidido crear un mini tutorial explicando los pasos necesarios para realizar este mantenimiento. Para versiones anteriores del IIS pod&amp;eacute;is acceder a &lt;a href="http://support.microsoft.com/kb/295281/es" title="http://support.microsoft.com/kb/295281/es"&gt;http://support.microsoft.com/kb/295281/es&lt;/a&gt; .&lt;/p&gt;
&lt;p align="justify"&gt;Para empezar aclararemos que con IIS7 es mucho m&amp;aacute;s f&amp;aacute;cil renovar o generar el certificado, pero si no estas familiarizado con el panel de control es posible que te cueste un poco encontrar las opciones.&lt;/p&gt;
&lt;p align="justify"&gt;Comencemos: &lt;/p&gt;
&lt;h3&gt;1&amp;ordm; Generar el fichero CSR&lt;/h3&gt;
&lt;p align="justify"&gt;Tanto para generar un nuevo certificado como para renovarlo es probable que nos pidan un fichero para la solicitud de firma (.CSR) &amp;ldquo;dependiendo del proveedor&amp;rdquo;. Para esto tendremos que ir al panel de control de nuestro IIS. Seleccionar el servidor y en el apartado de seguridad seleccionar los certificados existentes.&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mrubino/InstCert8_5F00_15AA46C2.jpg"&gt;&lt;img height="222" width="497" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mrubino/InstCert8_5F00_thumb_5F00_273A318D.jpg" alt="InstCert8" border="0" title="InstCert8" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p align="justify"&gt;Obtendremos la lista de certificados instalados en el servidor. Y seleccionamos la opci&amp;oacute;n que necesitemos, en mi caso crear solicitud de certificado para generar el fichero CSR.&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mrubino/InstCert9_5F00_63A2806A.jpg"&gt;&lt;img height="300" width="472" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mrubino/InstCert9_5F00_thumb_5F00_59FA1234.jpg" alt="InstCert9" border="0" title="InstCert9" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p align="justify"&gt;Rellenamos todos los campos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;&lt;strong&gt;Nombre com&amp;uacute;n:&lt;/strong&gt; &lt;strong&gt;&lt;span style="color:#ff0000;"&gt;&amp;ldquo;Muy Importante&amp;rdquo;&lt;/span&gt;&lt;/strong&gt; Nombre del dominio completo o URL. Por ejemplo, un certificado SSL emitido por &amp;quot;www.tuEmpresa.com&amp;quot; no ser&amp;aacute; v&amp;aacute;lido para &amp;quot;secure.tuEmpresa.com&amp;quot;. Si la direcci&amp;oacute;n Web que se utilizar&amp;aacute; para SSL es &amp;quot;secure.tuEmpresa.com,&amp;quot; garantizar que el nombre com&amp;uacute;n presentada en la RSE es &amp;quot;secure.tuEmpresa.com&amp;quot;.&amp;nbsp; Para todos los subdominios puedes utilizar el * por ejemplo, &amp;quot;*. tuEmpresa.com&amp;quot; o &amp;quot;www *. tuEmpresa.com&amp;rdquo;.&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;&lt;strong&gt;Organizaci&amp;oacute;n:&lt;/strong&gt; Nombre de la empresa.&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;&lt;strong&gt;Unidad Organizativa:&lt;/strong&gt; Departamento encargado del soporte por ejemplo &amp;ldquo;Departamento web&amp;rdquo;.&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;&lt;strong&gt;Ciudad o Localidad:&lt;/strong&gt; Ciudad de contacto de la empresa.&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;&lt;strong&gt;Estado o Provincia:&lt;/strong&gt; provincia de contacto de la empresa.&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;&lt;strong&gt;Pa&amp;iacute;s o regi&amp;oacute;n:&lt;/strong&gt; Pa&amp;iacute;s de contacto de la empresa.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p align="justify"&gt;Seleccionar el proveedor de servicios criptogr&amp;aacute;ficos RSA 1024 bits y guardar el fichero con extensi&amp;oacute;n CSR.&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mrubino/cert00_5F00_77F82028.jpg"&gt;&lt;img height="396" width="470" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mrubino/cert00_5F00_thumb_5F00_39CEDFAA.jpg" alt="cert00" border="0" title="cert00" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p align="justify"&gt;Se generar&amp;aacute; un fichero de este tipo &amp;ldquo;alterado ;-)&amp;rdquo;, que es el que se tiene que enviar a nuestro proveedor para generar la firma del certificado.&lt;/p&gt;
&lt;p align="justify"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mrubino/InstCert7_5F00_705C8AEE.jpg"&gt;&lt;img height="279" width="489" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mrubino/InstCert7_5F00_thumb_5F00_0A209B51.jpg" alt="InstCert7" border="0" title="InstCert7" style="border-bottom:0px;border-left:0px;display:block;float:none;margin-left:auto;border-top:0px;margin-right:auto;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;h3&gt;2&amp;ordm; Instalar el Certificado en el servidor&lt;/h3&gt;
&lt;p align="justify"&gt;Una vez que nuestro proveedor haya aceptado nuestro certificado web SSL ya lo podemos instalar en nuestro servidor web. &lt;/p&gt;
&lt;p align="justify"&gt;Nos pueden enviar el fichero o el texto del certificado, si es as&amp;iacute; tan s&amp;oacute;lo tenemos que generar un fichero de texto pegar el contenido y modificar la extensi&amp;oacute;n por .CER para tener preparado el certificado para su instalaci&amp;oacute;n.&lt;/p&gt;
&lt;p align="justify"&gt;Volvemos al panel de control del IIS &lt;strong&gt;&amp;ndash;&amp;gt;&lt;/strong&gt; certificados&lt;strong&gt; &amp;ndash;&amp;gt;&lt;/strong&gt; completar solicitud de certificado. &lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mrubino/InstCert10_5F00_1973FD60.jpg"&gt;&lt;img height="327" width="492" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mrubino/InstCert10_5F00_thumb_5F00_48299035.jpg" alt="InstCert10" border="0" title="InstCert10" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p align="justify"&gt;Buscamos el fichero y lo a&amp;ntilde;adimos a la lista de certificados del servidor.&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mrubino/InstCert2_5F00_7797FF01.jpg"&gt;&lt;img height="232" width="480" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mrubino/InstCert2_5F00_thumb_5F00_59F5FE35.jpg" alt="InstCert2" border="0" title="InstCert2" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;h3&gt;3&amp;ordm; Configurar nuestro sitio web HTTPS&lt;/h3&gt;
&lt;p align="justify"&gt;Si estamos configurando un nuevo sitio tenemos que habilitar el protocolo HTTPS y si ya lo ten&amp;iacute;amos configurado solo tenemos que modificar el certificado que utilizamos en el sitio web.&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mrubino/InstCert3_5F00_5E8C08EF.jpg"&gt;&lt;img height="350" width="383" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mrubino/InstCert3_5F00_thumb_5F00_5A520B5D.jpg" alt="InstCert3" border="0" title="InstCert3" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p align="justify"&gt;Seleccionamos el protocolo HTTPS para modificar la configuraci&amp;oacute;n.&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mrubino/InstCert4_5F00_25D13915.jpg"&gt;&lt;img height="318" width="390" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mrubino/InstCert4_5F00_thumb_5F00_26E62234.jpg" alt="InstCert4" border="0" title="InstCert4" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p align="justify"&gt;Seleccionamos el nuevo certificado SSL que utilizar&amp;aacute; el sitio web.&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mrubino/InstCert5_5F00_199F9921.jpg"&gt;&lt;img height="240" width="400" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mrubino/InstCert5_5F00_thumb_5F00_295F2E25.jpg" alt="InstCert5" border="0" title="InstCert5" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;h3&gt;Certificado renovado o instalado con &amp;eacute;xito !!!&lt;/h3&gt;
&lt;p align="justify"&gt;Nuestro sitio web ya est&amp;aacute; utilizando el nuevo certificado SSL correctamente y ya no nos tenemos que preocupar hasta el a&amp;ntilde;o que viene ;-)&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mrubino/image_5F00_0E465F17.png"&gt;&lt;img height="360" width="466" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mrubino/image_5F00_thumb_5F00_70382B55.png" alt="image" border="0" title="image" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p align="justify"&gt;Espero que este mini tutorial os sea de ayuda.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=177644" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/mrubino/archive/tags/IIS/default.aspx">IIS</category><category domain="http://geeks.ms/blogs/mrubino/archive/tags/Trucos/default.aspx">Trucos</category><category domain="http://geeks.ms/blogs/mrubino/archive/tags/https/default.aspx">https</category></item><item><title>Consultar un recurso Https con error en el certificado</title><link>http://geeks.ms/blogs/mrubino/archive/2009/09/24/consultar-un-recurso-https-con-error-en-el-certificado.aspx</link><pubDate>Wed, 23 Sep 2009 22:09:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:156613</guid><dc:creator>Marc Rubiño</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/mrubino/rsscomments.aspx?PostID=156613</wfw:commentRss><comments>http://geeks.ms/blogs/mrubino/archive/2009/09/24/consultar-un-recurso-https-con-error-en-el-certificado.aspx#comments</comments><description>&lt;p align="justify"&gt;Han habido varias consultas en el foro MSDN sobre como poder consultar un recurso web aunque el servidor que utiliza el protocolo https tenga el certificado caducado.&lt;/p&gt;
&lt;p align="justify"&gt;En esta entrada pondr&amp;eacute; un ejemplo muy simple que se puede utilizar para este menester.&lt;/p&gt;
&lt;p align="justify"&gt;Lo primero que he realizado es un proyecto web que utiliza una clase para enviar una petici&amp;oacute;n xml, por ejemplo si quisiera consumir un servicio web XML en php que no dispone de una descripci&amp;oacute;n p&amp;uacute;blica del interfaz &amp;ldquo;&lt;a target="_blank" href="http://es.wikipedia.org/wiki/WSDL" title="wsd"&gt;&lt;span style="color:#006ff7;"&gt;WSD&lt;/span&gt;&lt;/a&gt;&amp;rdquo;&lt;/p&gt;
&lt;p align="justify"&gt;La clase se llama Conector y utiliza un m&amp;eacute;todo est&amp;aacute;tico que utiliza la clase &lt;a target="_blank" href="http://msdn.microsoft.com/es-es/library/system.net.httpwebresponse(VS.95).aspx"&gt;&lt;span style="color:#006ff7;"&gt;HttpWebResponse&lt;/span&gt;&lt;/a&gt; para hacer la petici&amp;oacute;n Http y devuelve el resultado obtenido de la petici&amp;oacute;n como un string.&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:small;font-family:times new roman;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:xx-small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="font-size:14pt;"&gt;&lt;span style="font-family:times new roman;"&gt;EDITADO (25.09.2009):&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="font-size:14pt;"&gt;&lt;span style="font-family:times new roman;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;Gracias al comentario de eccho me he dado cuenta que la clase CertificatePolicy est&amp;aacute; en desuso &amp;ldquo;eso pasa por sacar temas del ba&amp;uacute;l sin hacer el repaso necesario de las librer&amp;iacute;as&amp;rdquo;. hora se recomienda el uso de &lt;a target="_blank" href="http://msdn.microsoft.com/es-es/library/system.net.servicepointmanager.servercertificatevalidationcallback(VS.80).aspx"&gt;&lt;span style="color:#006ff7;"&gt;ServerCertificateValidationCallback&lt;/span&gt;&lt;/a&gt;, que obtiene o establece la devoluci&amp;oacute;n de la llamada para validar un certificado de servidor.&lt;/p&gt;
&lt;pre&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; PostXml(&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; url, &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; xml, &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; certificado, &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; user, &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; pass)
{
        &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; resultado = &amp;quot;&lt;span style="color:#8b0000;"&gt;&lt;/span&gt;&amp;quot;;
        &lt;span style="color:#0000ff;"&gt;byte&lt;/span&gt;[] bytes = System.Text.Encoding.UTF8.GetBytes(xml);
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

        &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (!&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;.IsNullOrEmpty(user) &amp;amp;&amp;amp; !&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;.IsNullOrEmpty(pass))
            request.Credentials = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; NetworkCredential(user, pass);
        &lt;span style="color:#0000ff;"&gt;else&lt;/span&gt;
            request.Credentials = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; NetworkCredential();

        &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (!&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;.IsNullOrEmpty(certificado))
        {
            &lt;span style="color:#0000ff;"&gt;try&lt;/span&gt;
            {
                X509Certificate certificate = X509Certificate.CreateFromSignedFile(certificado);
                request.ClientCertificates.Add(certificate);

                System.Net.ServicePointManager.ServerCertificateValidationCallback 
+= &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; System.Net.Security.RemoteCertificateValidationCallback(customXertificateValidation);

            }
            &lt;span style="color:#0000ff;"&gt;catch&lt;/span&gt; (Exception)
            {
                &lt;span style="color:#0000ff;"&gt;throw&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Exception(&amp;quot;&lt;span style="color:#8b0000;"&gt;Error al generar el certificado de cliente. &lt;/span&gt;&amp;quot; + certificado);
            }

        }

        request.Method = &amp;quot;&lt;span style="color:#8b0000;"&gt;POST&lt;/span&gt;&amp;quot;;
        request.ContentLength = bytes.Length;
        request.ContentType = &amp;quot;&lt;span style="color:#8b0000;"&gt;text/xml&lt;/span&gt;&amp;quot;;
        &lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; (System.IO.Stream requestStream = request.GetRequestStream())
        {
            requestStream.Write(bytes, 0, bytes.Length);
        }

        &lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
        {
            &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (response.StatusCode != HttpStatusCode.OK)
            {
                &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; message = String.Format(&amp;quot;&lt;span style="color:#8b0000;"&gt;POST failed. Received HTTP {0}&lt;/span&gt;&amp;quot;,
                response.StatusCode);
                &lt;span style="color:#0000ff;"&gt;throw&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; ApplicationException(message);
            }

            &lt;span style="color:#008000;"&gt;//Mostramos la respuesta de la P&amp;aacute;gina&lt;/span&gt;
            &lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; (System.IO.StreamReader sr = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; System.IO.StreamReader(
                response.GetResponseStream(), System.Text.Encoding.Default))
            {
                resultado = sr.ReadToEnd();
            }
        }

        &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; resultado;

}&lt;/pre&gt;
&lt;p&gt;A este m&amp;eacute;todo se le pasan varios par&amp;aacute;metros:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;url&lt;/strong&gt; &amp;ndash;&amp;gt; url a donde haremos la petici&amp;oacute;n- &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;xml&lt;/strong&gt; &amp;ndash;&amp;gt; texto XML que espera el servidor. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;certificado&lt;/strong&gt; &amp;ndash;&amp;gt; ruta f&amp;iacute;sica donde tenemos guardado el fichero de certificaci&amp;oacute;n. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;user&lt;/strong&gt; &amp;ndash;&amp;gt; usuario si necesitamos credenciales de red &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;pas&lt;/strong&gt; &amp;ndash;&amp;gt; contrase&amp;ntilde;a del usuario de red. &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Cabe destacar que para poder conectar con el servidor HTTPS necesitamos el certificado de cliente correcto. Para conseguirlo lo podemos descargar directamente de la web.&lt;/p&gt;
&lt;p&gt;1. Accedemos al recurso https &amp;ldquo;puede que el certificado est&amp;eacute; caducado y de un error&amp;rdquo; seleccionamos &lt;strong&gt;Vaya a este sitio web (no recomendado)&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;2. Seleccionamos ver el certificado&amp;nbsp;&lt;/p&gt;
&lt;p&gt;3. guardamos el certificado en el disco.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/Community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/marckys/certificado2_5F00_440AF60F.jpg"&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Una vez guardado el certificado ya podemos hacer la llamada al recurso web.&lt;/p&gt;
&lt;pre&gt;&lt;span style="color:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; Button1_Click(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; sender, EventArgs e)
{
   &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; respuesta = Conector.PostXml(&amp;quot;&lt;span style="color:#8b0000;"&gt;https://test2.com/&lt;/span&gt;&amp;quot;,
      &amp;quot;&lt;span style="color:#8b0000;"&gt;&amp;lt;test&amp;gt;&amp;lt;dato&amp;gt;&amp;lt;/dato&amp;gt;&amp;lt;/test&amp;gt;&lt;/span&gt;&amp;quot;, 
      &amp;quot;&lt;span style="color:#8b0000;"&gt;c\\certificado.cer&lt;/span&gt;&amp;quot;,&amp;quot;&lt;span style="color:#8b0000;"&gt;winUser&lt;/span&gt;&amp;quot;,&amp;quot;&lt;span style="color:#8b0000;"&gt;PassUser&lt;/span&gt;&amp;quot;);
        
}&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Pero si el certificado no es correcto o est&amp;aacute; caducado no nos permite hacer la consulta !!!&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;Entonces lo que tenemos que hacer es personalizar la validaci&amp;oacute;n del certificado para que nos devuelva el valor que nos interese en cada caso.&lt;/p&gt;
&lt;p align="justify"&gt;Utilizaremos el delegado &lt;a target="_blank" href="http://msdn.microsoft.com/es-es/library/system.net.servicepointmanager.servercertificatevalidationcallback(VS.80).aspx"&gt;&lt;span style="color:#006ff7;"&gt;ServerCertificateValidationCallback&lt;/span&gt;&lt;/a&gt; para lanzar la validaci&amp;oacute;n personalizada del certificado y en nuestro caso devolver true.&lt;/p&gt;
&lt;pre&gt;ServicePointManager.ServerCertificateValidationCallback 
+= &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; System.Net.Security.RemoteCertificateValidationCallback(customXertificateValidation);&lt;/pre&gt;
&lt;pre&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt; customXertificateValidation(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; sender,
 System.Security.Cryptography.X509Certificates.X509Certificate cert, 
System.Security.Cryptography.X509Certificates.X509Chain chain, 

System.Net.Security.SslPolicyErrors error)
{
        &lt;span style="color:#008000;"&gt;//return false;&lt;/span&gt;
        &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;;
}&lt;/pre&gt;
&lt;p&gt;Esta clase se podr&amp;iacute;a personalizar m&amp;aacute;s para que dependiendo del error devuelva verdadero o falso, gracias a la enumeraci&amp;oacute;n con los tipos de error.&lt;/p&gt;
&lt;pre&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;enum&lt;/span&gt; CertificateProblem : &lt;span style="color:#0000ff;"&gt;long&lt;/span&gt;
{
    CertEXPIRED = 0x800B0101,
    CertVALIDITYPERIODNESTING = 0x800B0102,
    CertROLE = 0x800B0103,
    CertPATHLENCONST = 0x800B0104,
    CertCRITICAL = 0x800B0105,
    CertPURPOSE = 0x800B0106,
    CertISSUERCHAINING = 0x800B0107,
    CertMALFORMED = 0x800B0108,
    CertUNTRUSTEDROOT = 0x800B0109,
    CertCHAINING = 0x800B010A,
    CertREVOKED = 0x800B010C,
    CertUNTRUSTEDTESTROOT = 0x800B010D,
    CertREVOCATION_FAILURE = 0x800B010E,
    CertCN_NO_MATCH = 0x800B010F,
    CertWRONG_USAGE = 0x800B0110,
    CertUNTRUSTEDCA = 0x800B0112
}&lt;/pre&gt;
&lt;p&gt;Con esto tenemos todo lo necesario para que nuestro ejemplo est&amp;eacute; funcionando perfectamente.&lt;/p&gt;
&lt;p&gt;Espero que sea de utilidad.&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Nos vemos en el &lt;a target="_blank" href="http://www.codecamp.es/"&gt;CodeCamp 09&lt;/a&gt;&amp;nbsp;&amp;nbsp; Cross-Posting &lt;a href="http://lonetcamp.com" title="http://lonetcamp.com"&gt;http://lonetcamp.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=156613" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/mrubino/archive/tags/https/default.aspx">https</category><category domain="http://geeks.ms/blogs/mrubino/archive/tags/consultas+foro/default.aspx">consultas foro</category></item></channel></rss>