Error: Event 1064 - The requested template is not supported by this CA

martes, 25 de agosto de 2015


Me encontré con un caso donde se estaba asegurando la conexión a través de RDP con SSL, para ello se utilizó un certificado emitido por una CA interna, el certificado estaba configurado con “Object Identifier”  “1.3.6.1.4.1.311.54.1.2” con propósito para ser utilizado solamente en conexiones RDP, el certificado fue desplegado utilizando la directiva de grupo, sin embargo, en los servidores con sistema operativo Windows Server 2008 R2 el certificado no estaba siendo desplegado, y el error que se podía observar en el visor de eventos era el siguiente:


Este es el texto del mensaje:

The terminal server cannot install a new template based certificate to be used for Transport Security (TLS) 1.0\Secure Sockets Layer (SSL) authentication and encryption. The following error ocurred: The requested certificate template is not supported by this CA.

Lo curioso del asunto, es que los servidores con sistema operativo Windows Server 2012 no presentan el problema, solamente se presentó en Windows Server 2008 R2, a continuación la imagen del certificado en el sistema Windows Server 2012, se puede apreciar claramente que el certificado está basado en una plantilla llamada RDP Secure



Al observar con detenimiento las propiedades de la plantilla del certificado, observé una diferencia que a simple vista de pronto no es fácil de notar.


Si observan con detenimiento Los campos Template display name y Template name aunque dicen lo mismo tienen una diferencia (un espacio en blanco entre las palabras RDP y Secure)

Resulta que en Windows Server 2008 la información de estos dos campos debe ser idéntica, esto ya no funciona así a partir de Windows Server 2012, esta es la razón por la cual si funcionaba en la versión más reciente de Windows Server, me tomó un buen tiempo darme cuenta de esto, y por eso lo plasmo en este blog por si en algún momento alguien experimenta lo mismo.

Así que decidí hacer lo obvio, quitar el certificado de lista de plantillas de certificados a emitir, cambiar el nombre en la plantilla y volver a importar el certificado en la CA con base en la nueva plantilla.

Así que veamos los pasos, eliminé 


Luego en la consola de plantillas de certificados (certtmpl.msc), seleccioné la plantilla RDP Secure clic derecho y elegir Change names


Este es el cuadro de diálogo antes del cambio (nótese la diferencia en ambos campos)


Ahora realizo el cambio en el campo Template display Name voy a dejar el nombre sin espacio, aunque al final significó más trabajo para mi ya verán porqué.

Imagen después del cambio, al terminar hacer clic en OK


Al intentar cargar la nueva plantilla para emitir, veo que sigue apareciendo el nombre anterior (con espacios), por ello mencioné lo del trabajo adicional, sin embargo pensé que con reiniciar el servicio bastaría per no fue así, seguia mostrando tal como en la siguiente imagen:


Fui a revisar las propiedades de la plantilla y me encuentro que en la pestaña Extensions en Certificate Template Information es donde sigue apareciendo el anterior nombre. (no tomé el pantallazo antes, así que la imagen alcanza a mostrar el nombre ya corregido)


Después de averiguar en algunos KB de Microsoft encontré que al ya haber emitido certificados con esta plantilla, después de cambiar el nombre era necesario el reinicio de la CA, así que procedí con el reinicio.

Tras reiniciar, vuelvo al contenedor de plantillas de certificados y sigo el proceso para cargar una nueva plantilla de certificado para emitir.


Vemos que ahora si me ofrece la plantilla con el cambio de nombre.


Ahora, el resultado como lo esperaba.


Pero al final recordé que había que cambiar algo en otro lugar (la directiva de grupo!) y adivinen cual nombre de plantilla tenía :-( así que no me quedó más opción que hacer el cambio también en la GPO.

La GPO antes



Y después del cambio:


Después de estos cambios, voy a los servidores con Windows Server 2008 R2, hago un gpupdate /force lo primero que noté es que el evento 1064 ya no apareció tras el gpudate, una excelente noticia, luego a revisar en el almacén personal de certificados del servidor, y me encuentro la grata sorpresa de encontrar el certificado basado en la plantilla tal como se muestra en la siguiente imagen:


Bien, y esto es todo, espero a alguien le pueda ser útil esta información.

Gracias y hasta la próxima!

Local Administrator Password Solution (LAPS) Disponible




Desde hace un tiempo, y desde sus primeras versiones he venido utilizando la herramienta AdmPwd que permita el manejo de la contraseña del usuario administrador local, almacenándola en un atributo de Active Directory, lo cual permite gestionar el tema de manera centralizada y cada usuario tendrá una contraseña diferente en cada uno de los equipos dentro del alcance de la solución. Para ver cómo se instala y funciona la herramienta puede revisar el siguiente artículo que escribí sobre la herramienta: http://www.cesarherrada.com/2015/01/cambiar-contrasena-de-administrador.html

Pero la buena noticia es que desde Mayo de este año la herramienta ya está disponible desde el centro de descargas de Microsoft.

Aquí está el Security Advisory 3062591 donde se anuncia: 

Y aquí tenemos el enlace oficial al centro de descargas de Microsoft:

La herramienta ha sido llamada por Microsoft Local Administrator Password Solution (LAPS) así que en adelante nos referiremos a LAPS cuando de esta herramienta se trate. 

Crear cuenta de servicio local con PowerShell

lunes, 24 de agosto de 2015


En algunas ocasiones podemos tener la necesidad de crear una cuenta de servicio local, donde claramente no tenemos Active Directory para crear una cuenta de servicio de dominio, en estos escenarios es común requerir a técnicas como por ejemplo un adaptador [ADSI], pero el título de este artículo es claro en mencionar que la creación de la cuenta de servicio es con PowerShell, y mejor aún la podemos crear en equipos remotos ¿cómo es posible? veamos a continuación.

Actualmente no disponemos de un módulo de PowerShell que lo permita, pero en el Script Center de TechNet se encuentra una buena solución, un ingeniero de Microsoft ha desarrollado un módulo de PowerShell, que en su interior también hace uso del adaptador [ADSI], pero encapsula todo en el código para que no tengamos que llevar a cabo los complejos pasos que ello involucra, sino que en su lugar usaremos sencillos y amigables command lets o cmdlets.

Para usar el módulo debemos realizar los siguientes pasos:

1. Ingresar a la siguiente URL donde encontraremos el código del Script:
     https://gallery.technet.microsoft.com/scriptcenter/f75801e7-169a-4737-952c-1341abea5823

2. En la página encontraremos el código, seleccione y copie todo el código, el sitio no tiene un botón para descargar un archivo con el código.




3, Abrimos un editor de texto y pegamos el código copiado, en este caso usaré PowerShell ISE



4. Debemos crear un directorio llamado Local_User en el directorio de módulos

Si no conoces la ubicación del directorio de módulos, puedes averiguarlo con el siguiente comando en una consola de PowerShell

$ENV:PSModulePath

Sin embargo, si has trabajado con módulos alguna vez, sabrás que la ruta que siempre exploramos, es la siguiente:

C:\Windows\system32\WindowsPowerShell\v1.0\Modules\


Al final la carpeta de módulos debe tener una apariencia similar a la siguiente:


5. El código que tenemos en el editor debemos guardarlo con el siguiente nombre Local_User.psm1 (Nótese la extensión psm1), debemos guardar este archivo en la carpeta recién creada Local_User



Importante: El módulo y el directorio deben llamarse igual, no poner nombres diferentes.

Y esto es todo, ya estamos listos para usar el módulo, basta con ingresar a una consola de PowerShell e importar el módulo.

Import-Module Local_User


Ahora, creemos una cuenta llamada Service1 en el servidor SERVER02 

 New-LocalUser -userName Service1 -password "P@ssw0rd" -computerName SERVER02


Como podemos apreciar con una sola línea tenemos una cuenta local creada en un equipo remoto, ahora vayamos a SERVER02 a revisar.



La descripción Created by PowerShell sale de forma automática, pero podemos poner nuestra propia descripción usando el parámetro -Description

De manera predeterminada la cuenta recién creada no pertenece a ningún grupo, veamos como podemos agregar esta cuenta al grupo de Administradores por ejemplo. A continuación el comando completo.

Set-LocalGroup Service1 -computerName SERVER02 -add Administrators



El cmdlet Set-LocalGroup sirve para agregar o eliminar miembros de un grupo

Para ver la lista completa de comandos que trae el módulo podemos escribir lo siguiente:

Get-Command *-local*


Podemos excluir el último comando, como podemos ver pertenece a otro módulo.

También incorpora ayuda, así que si deseamos saber la sintaxis y ver ejemplos de cada comando, basta con invocar la ayuda. Por ejemplo podemos consultar la ayuda del cmdlet Set-LocalUserPassword que sirve para cambiar la contraseña de un usuario local.

Get-Help Set-LocalUserPassword


Esto es todo, espero les sea de utilidad. Hasta la próxima.

Conectarse a suscripción de Microsoft Azure con PowerShell

domingo, 23 de agosto de 2015


La conexión con Azure desde PowerShell nos permite administrar como nos gusta, desde la línea de comando todo lo que tengamos en la nube, vamos directo al grano.

Lo primero es descargar e instalar el módulo de PowerShell para Azure mediante el cual podemos realizar prácticamente las mismas cosas que podemos hacer desde el portal, el módulo debemos instalarlo mediante el instalador de plataforma web de Micrtosoft más conocido como (WPI), disponible para descarga a través del siguiente enlace:



Una vez descargado ejecutamos el instalador y veremos la siguiente ventana


Simplemente hacemos clic en el botón Install


Iniciará el proceso de instalación, podemos tomar un café mientras termina la instalación.


Al finalizar ya tendremos el módulo instalado! hacer clic en Finish para terminar



En la última pantalla de la instalación podemos observar que Microsoft Azure PowerShell se encuentra instalado, y de paso podemos ver que se nos ofrece instalar algunas otras herramientas de interés, si vamos a las pestañas Products y Applications encontraremos muchas cosas interesantes.


Para terminar hacemos clic en el botón Exit

Ahora, en el grupo de Apps veremos una nueva:


El módulo de PowerShell para Azure, el cual nos será de bastante utilidad para administrar nuestra infraestructura de nube.

Ahora si, vamos al objetivo de este artículo, conectarnos a la suscripción de Azure, para ello vamos a utilizar el método de autenticación con Azure AD para lo cual debemos tener una cuenta en un tenant de AD, veamos el proceso:

1. Abrimos una consola de Azure PowerShell y escribimos el siguiente comando: Add-AzureAccount

2. Se abrirá la ventana para iniciar sesión en Microsoft Azure, escribimos la cuenta y hacemos clic en Continue



Después de verificar la cuenta solicitará las credenciales de la misma, una vez digitadas hacemos clic en Sign in


3. Micrtosoft Azure realiza la autenticación y cierra la ventana

Nota: A partir de la versión 0.8.6 del módulo de PowerShell para Azure, se puede especificar las credenciales haciendo uso del cmdlet Get-Credential con ello se evitará la ventana emergente, simplemente debemos escribir lo siguiente desde la consola de PowerShell:

$cred = Get-Credential

Add-AzureAccount -Credential $cred

4. Una vez termine la verificación de la cuenta veremos el detalle de la suscripción en la consola de PowerShell


De este modo ya tenemos conexión con la suscripción predeterminada y podemos empezar a lanzar instrucciones, por ejemplo vamos a consultar las instancias de máquina virtual existentes, basta con el cmdlet Get-AzureVM


Bien, como podemos ver la tarea es sencilla, existe otro método para conectarse a la suscripción que es el método con certificados, pero este es el recomendado ahora por Microsoft, el de certificado complica la administración cuando existen varias personas con acceso a la suscripción, por lo cual no hablaré sobre dicho método en este artículo.



Espero esta información sea de utilidad y nos vemos en un próximo artículo.

Cómo cambiar la suscripción por defecto en Azure


En Azure puede ocurrir que tengamos varias suscripciones asociadas a nuestra cuenta, y cuando deseamos administrar desde el módulo de PowerShell para Azure, éste siempre se conectará a la suscripción por defecto, es allí donde nace la necesidad de cambiar a otra suscripción para ejecutar tareas sobre ella, primero veamos cómo se hace para saber cuál es la suscripción que predeterminada, para lo cual bastará con ejecutar el siguiente comando:

Get-AzureSubscription -Default


Nótese la propiedad IsDefault en True

Si utilizamos el cmdlet Get-AzureSubscription se listarán todas las suscripciones


Ye teniendo en mente sobre cual suscripción vamos a trabajar y por ende deseamos conectarnos, ejecutamos el siguiente comando:

Select-AzureSubscription "Nombre de la suscripción"

Luego, podemos verificar si la suscripción que seleccionamos es la actual, para ello ejecutamos el sigueinte comando:

Get-AzureSubscription -Current

Veamos el resultado de los dos comandos anteriores en una sola imagen:


Podemos ver que efectivamente estamos conectados a otra suscripción.

Importante: Los parámetros -Current -Default muestran el mismo resultado en las últimas versiones del módulo, ya que el cmdlet Get-AzureSubscription ya marca estos parámetros como depreciados, tal como se muestra a continuación.


El archivo JSON donde se almacena esta información es llamado AzureProfile y se encuentra en la siguiente ubicación:

%userprofile%\AppData\Roaming\Windows Azure Powershell

Espero esta información les sea de utilidad. Hasta la próxima.

Cómo crear cuenta de almacenamiento en Azure


Cuando estamos trabajando en Azure uno de los primeros recursos a crear debe ser una cuenta de almacenamiento, que es básicamente el lugar donde vamos a guardar nuestras máquinas, datos de aplicación o cualquier otro tipo de información, veamos lo sencillo que resulta en Azure hacerlo:

1. Ingresamos al portal de administración de Azure y en el panel de la izquierda seleccionamos Almacenamiento


2. En la parte inferior izquierda de la pantalla hacemos clic en Nuevo


3. Desplegamos hasta llegar a los datos de la cuenta, tal como se indica a continuación:



A. Seleccionar Almacenamiento
B. Seleccionar Creación rápida
C. En Dirección URL elegimos el nombre que llevará la cuenta (debe ser un nombre único), el cual llevará la extensión core.windows.net
D. E, ubicación grupo de afinidad seleccionamos un grupo previamente creado o elegimos la región (datacenter) donde se aprovisionará el almacenamiento.
E. En replicación elegimos si deseamos que la cuenta sea replicada en otros centros de datos o localmente.

Al terminar hacemos clic en Crear cuenta de almacenamiento


Esperamos un par de segundos hasta que finalice la creación, y al final tendremos nuestra cuenta lista para usar.


Al hacer clic sobre el nombre de la cuenta de almacenamiento, en este caso azurecloudla tendremos acceso a un menú superior con varias opciones, por ahora vamos a explorar solo la opción Contenedores


Al ingresar veremos un anuncio que indica que no tenemos ningún contenedor, hacemos clic en Crear contenedor


Nos pedirá un nombre y un tipo de acceso, voy a ponerle backup pues pienso usar este contenedor para almacenar copias de seguridad, nótese que los contenedores podemos verlos como una especie de "carpeta" en la cual guardaremos algún tipo de información, y el tipo de acceso es quién podrá tener acceso al contenedor.



Para este caso cree el contenedor de tipo Privado (solo puede acceder el propietario de la cuenta).

Ya con esto tenemos nuestro contenedor, observe la URL que se le ha asignado para poder tener acceso al mismo desde Internet.


Si hacemos clic en el nombre del contenedor, éste se abrirá y se podrá observar su contenido, que en este caso no tenemos, dado que lo acabamos de crear.

Nota: En Azure los blobs son cualquier tipo de archivo, es decir allí podemos almacenar texto, imágenes, vídeo, sonido, etc.

Una cuenta de almacenamiento puede tener múltiples contenedores.

De este modo hemos aprendido cómo crear una cuenta de almacenamiento, en futuros artículos utilizaremos esta misma cuenta y mostraré cómo poner información allí.

Hasta la próxima.

Copiar archivos en Azure desde PC con AzCopy


En esta entrada vamos a explorar un poco la forma de copiar información desde nuestro equipo local hacia una cuenta de almacenamiento en Azure, es bastante común tener que transmitir datos bien sea entre servidores on-premise y Azure e incluso entre cuentas de almacenamiento y contenedores del mismo Azure, la herramienta AzCopy es una buena opción cuando se trate de pasar información a gran escala y se espere un rendimiento óptimo, es algo así como un Robocopy para Azure, la herramienta tiene bastantes parámetros y muchas utilidades, las cuales a medida que vaya probando trataré de postear en este blog, sin embargo, el propósito de esta entrada es mostrar cómo se usa la herramienta para copiar un archivo desde un equipo local hacia una cuenta de almacenamiento en Azure

Lo primero es descargar la última versión de AzCopy desde la siguiente URL:

Una vez descargado ejecutamos el paquete .msi MicrosoftAzureStorageTools


Y seguimos los pasos del asistente para la instalación. Clic en Next para continuar



Aceptamos los términos de la licencia y hacemos clic en Next


Seleccionamos la ubicación donde se instalará la herramienta, clic en Next


Por último, clic en Install para que inicie el proceso de instalación.


Cuando termine la instalación hacemos clic en el botón Finish


Ahora que tenemos instalada la herramienta, si revisamos el grupo de Apps de Azure, veremos una nueva llamada Microsoft Azure Storage Command Line


Al abrir, veremos la consola  sobre la cual ejecutaremos los comandos para copiar información desde nuestro PC local hacia un contenedor en Azure.


Para iniciar la prueba, voy simplemente a crear un archivo con tamaño de 1GB, el cual subiré a un contenedor en Azure, para la creación utilicé el comando fsutil como se muestra a continuación:

fsutil file createnew c:\temp\file.txt 1073741824

Lo anterior, crear un archivo llamada file.txt en la ruta C:\temp

Uno de los parámetros de AzCopy es la la llave en el destino, es decir, en la cuenta de almacenamiento de Azure, para obtenerla debemos ingresar al portal, y al ubicarnos sobre la cuenta de almacenamiento en la parte inferior hacemos clic en la opción Administrar claves de acceso


Hacemos clic en el icono que aparece junto a la clave para que la llave se copie de manera automática al portapapeles.

Podemos guardar la clave en algún archivo de texto o mantenerla en memoria para pegarla en la consola de AzCopy.

Escribimos lo siguiente para copiar el archivo file.txt que generamos al contenedor en Azure.

AzCopy /Source:C:\temp /Dest:https://azurecloudla.blob.core.windows.net/backup /DestKey:key /Pattern:file.txt

La información en negrilla es la que debe reemplazar por sus propios datos.


Como se puede apreciar en la imagen, se indica que ha finalizado la copia de 0 archivos y muestra la tasa de transferencia (a esa velocidad ya imaginarán cuando tardaré subiendo 1GB), aquí solo resta esperar hasta que la herramienta suba el archivo de 1GB que generamos.

Al finalizar el proceso de copia, se mostrará en pantalla el resumen de la operación.


Ahora, me voy a conectar al portal y navegaré hasta el contenedor backup para observar el archivo desde allí.

Y efectivamente, aparece nuestro archivo file.txt de 1GB de tamaño.

Espero esta información les sea de utilidad, y si voy descubriendo cosas de AzCopy las pondré por aquí.

Hasta la próxima.
 

Lo más visto

Comunidad

Comunidad
Comunidad Técnica

Visitas