miércoles, 30 de junio de 2021

Escribir fecha actual en cmd



Cómo escribir la fecha actual en un fichero .bat en cmd.



Si tenemos que crear un fichero, mover un fichero o renombrar un fichero usando un archivo .bat en Windows, podemos usar el siguiente método para escribir el día en que se ejecuta la orden o el script.

Primero veamos qué formato tiene la fecha en nuestro sistema:

C:\Users\Usuario>echo Date is: %date% Date is: 30/06/2021

A continuación, podemos ir cogiendo el día, mes y año según su posición en la fecha en sí:

C:\Users\Usuario>echo %date:~0,2%%date:~3,2%%date:~6,4% 30062021

Desgranemos %date:~0,2%%date:~3,2%%date:~6,4%:

%date:~0,2: desde la posición 0 (3), coger 2 caracteres (30).
%%date:~3,2: desde la posición 3 (0), coger 2 caracteres (06).
%%date:~6,4%: desde la posición 6 (2), coger 4 caracteres (2021).

Se usa doble % tras el primer comando date para escapar el %, de otro modo es escribiría literalmente lo que viene tras un solo %. Si escribimos un solo % en el segundo parámetro, obtendremos:

C:\Users\Usuario>echo %date:~0,2%date:~3,2%%date:~6,4% 30date:~3,2%2022

Ya para acabar, si queremos renombrar archivo.txt según el día de hoy, podemos ejecutar:

ren archivo.txt archivo_%date:~0,2%%date:~3,2%%date:~6,4%.txt

Esto es útil para ejecutar scripts que hagan renombrados automáticos bajo ciertas condiciones.
0

miércoles, 23 de junio de 2021

Generar certificado autofirmado con openssl



Cómo generar un certificado crt autofirmado con openssl.



Si necesitamos generar un certificado autofirmado, podemos usar openssl:

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -sha256 -days 365

Esto generará dos archivos:

- key.pem: la clave privada del certificado.
- cert.pem: la clave pública del certificado.

Asimismo, se puede añadir la opción -nodes (no DES) al comando anterior si se quiere generar una clave privada sin passphrase o contraseña. De otro modo, tendremos que asignar una contraseña a la clave privada tras ejecutar el comando.

El parámetro "days" puede contener el número de días de validez que queramos. Ese número de días generará implícitamente la fecha de expiración del certificado.

Se pueden añadir opciones como -subj '/CN=localhost' para insertar información automáticamente en el crt y no mostrar preguntas sobre el creador del certificado durante la creación.

Por ejemplo:

openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes \ -keyout example.key -out example.crt -subj "/CN=example.com" \ -addext "subjectAltName=DNS:example.com,DNS:www.example.net,IP:10.0.0.1"

Hay que destacar que los certificados autofirmados no están validados por una entidad certificadora reconocida, por lo que mostrarán un mensaje de advertencia en los navegadores.

Si se necesita que un certificado sea aceptado por cualquier navegador, se debe usar un certificado de pago firmado por una autoridad certificadora (CA) reconocida, como GoDaddy.
1

miércoles, 16 de junio de 2021

Instalar AWS cli en Linux



Cómo instalar AWS cli en un servidor u ordenador corriendo Linux.



La potencia de AWS reside en la capacidad de levantar y tirar instancias desde la línea de comandos mediante AWS cli. Y para poder usar AWS cli, primero hay que instalarlo.

Para instalarlo, primero debemos descargar el instalador:

HOST # curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 45.0M 100 45.0M 0 0 66.2M 0 --:--:-- --:--:-- --:--:-- 66.1M

Acto seguido, descomprimimos el paquete:

HOST # unzip awscliv2.zip

A continuación, lo instalamos:

HOST # sudo ./aws/install You can now run: /usr/local/bin/aws --version

Miramos que haya quedado instalado:

HOST # aws --version aws-cli/2.7.11 Python/3.9.11 Linux/5.3.18-150300.59.63-default exe/x86_64.sles.15 prompt/off

Ahora es momento de configurar el acceso a nuestra cuenta, con las credenciales que hayamos creado en IAM y la región que queramos controlar desde cli:

HOST # aws configure AWS Access Key ID [None]: ABCDEFGHIJKLMNOPQRSTUV AWS Secret Access Key [None]: 123456789abcdefgABCDEFG Default region name [None]: eu-west-1 Default output format [None]: json

A partir de este momento ya podemos lanzar comandos con aws cli.

Por ejemplo, para listar nuestros buckets S3:

HOST # aws s3 ls 2021-06-03 17:08:50 bucket2 2021-06-01 14:55:44 bucket1


Fuentes:

https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html
0

miércoles, 9 de junio de 2021

Evitar contenido HTTP usando Apache con HTTPS



Cómo evitar mixed content warning en Apache.

Si servimos una web en HTTPS mediante Apache y esta enlaza a recursos como imágenes, css o JavaScript mediante links que usen HTTP, los navegadores no cargarán estos recursos.

Para evitar este problema, podemos configurar el siguiente código en el .htaccess:

<ifModule mod_headers.c> Header always set Content-Security-Policy "upgrade-insecure-requests;" </IfModule>

Este encabezado indica al navegador web que "actualice" las solicitudes HTTP a HTTPS sin tener que tocar código en el sitio web, pero solo funciona en navegadores modernos.


Tocando código


Si podemos tocar código, deberíamos cambiar los enlaces de la siguiente manera:

1) Modificando todos los enlaces para cargar archivos a través de HTTPS:

<img src="https://ejemplo.com/imagen.png">

2) Alternativamente, se puede prescindir de http y https y dejar que el servidor elija el esquema:

<img src="//ejemplo.com/imagen.png">

3) Por último, podemos usar rutas relativas:

<img src="/imagen.png">

NOTA: "//" hace que el navegador utilice el mismo esquema de la URL actual, por lo que utilizará https:// en las páginas HTTPS y http:// en las páginas HTTP.
0

martes, 1 de junio de 2021

Protocol error (NSPOSIXErrorDomain:100)



Cómo solucionar: The operation couldn’t be completed. Protocol error (NSPOSIXErrorDomain:100).



Tras pasar un dominio por un NGINX actuando como reverse proxy y Apache tras el proxy actuando como web server, me comentó alguien que la web no se veía en el navegador Safari sobre MacOS / iOS.

Al acceder al sitio web, el navegador mostraba el siguiente error:


The operation couldn’t be completed. Protocol error (NSPOSIXErrorDomain:100)

Como decía, cuando NGINX se usa como proxy inverso con Apache como back-end, este obtiene recursos de Apache usando HTTP/1.1, que el servidor back-end intenta actualizar a HTTP/2 enviando el encabezado "Upgrade: h2". Como la conexión ya está establecida en HTTP/2, falla.

Para evitar ver este error y mostrar la web de turno correctamente, podemos usar el siguiente parámetro en el archivo nginx.conf o en un include al mismo:

proxy_hide_header Upgrade;

Tras esto, bastará con hacer un reload de la configuración de NGINX y la web ya será accesible desde Safari sobre MacOS o iOS de Apple.


Fuentes:

https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_hide_header
https://trac.nginx.org/nginx/ticket/915
https://megamorf.gitlab.io/2019/08/27/safari-nsposixerrordomain-100-error-with-nginx-and-apache/
0