= Dockerfile mariadb + SSL
{{tag>dockerfile}}
=== Dockerfile
FROM mariadb:latest
ADD --chown=mysql:root ./data/certs/server-key.pem /etc/mysql/certs/server.key
ADD ./data/certs/server-cert.pem /etc/mysql/certs/server.crt
ADD ./data/certs/ca-cert.pem /etc/mysql/certs/CA.crt
ADD ./data/certs/ssl.cnf /etc/mysql/conf.d/ssl.cnf
docker build --tag mariadb:ssl .
== certificados
mkdir -p data/db
mkdir -p data/certs
cd data/certs
# CA key
openssl genrsa 2048 > ca-key.pem
openssl req -new -x509 -nodes -days 3600 -key ca-key.pem -out ca-cert.pem
# server key
openssl req -newkey rsa:2048 -days 3600 -nodes -keyout server-key.pem -out server-req.pem
openssl rsa -in server-key.pem -out server-key.pem
openssl x509 -req -in server-req.pem -days 3600 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem
# client key
openssl req -newkey rsa:2048 -days 3600 -nodes -keyout client-key.pem -out client-req.pem
openssl rsa -in client-key.pem -out client-key.pem
openssl x509 -req -in client-req.pem -days 3600 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem
# check key ok
openssl verify -CAfile ca-cert.pem server-cert.pem client-cert.pem
=== -config
fichero de configuración para pasar los parámetros a los **req**
* openssl req -new -key self-ssl.key -out self-ssl.csr -config csr.conf
* [req]
default_bits = 2048
distinguished_name = dn
prompt = no
[dn]
C="TW"
ST="Taiwan"
L="Taipei"
O="YIDAS"
OU="Service"
emailAddress="yourmail@mail.com"
CN="yourdomain.com"
[req_ext]
subjectAltName = @alt_names
[alt_names]
DNS.0 = *.yourdomain.com
DNS.1 = *.dev.yourdomain.com
* importante que el CN (Common Name) sea distinto en los diferentes **req**
* /via: [[https://gist.github.com/yidas/af42d2952d85c0951c1722fcd68716c6]]
== ejecución
docker run -it --name mariadb -p 3306:3306 -v ${PWD}data/db:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=admin mariadbssl
docker run -it --name mariadb -p 3306:3306 -v /var/lib/mysql:/var/lib/mysql -v /etc/newcerts:/etc/newcerts -e MYSQL_DATABASE=DB -e MYSQL_USER=user -e MYSQL_PASSWORD=userpass -e MYSQL_ROOT_PASSWORD=admin mariadb:ssl
más información: [[https://hub.docker.com/_/mariadb]]
== SQL tips
* mysql --host=127.0.0.1 -u root -padmin
* grant all on *.* to 'cross'@'192.168.0.17' identified by '123456' require ssl;
* mysql --host=127.0.0.1 -u cross -p123456 --ssl-ca=data/certs/ca-cert.pem --ssl-cert=data/certs/client-cert.pem --ssl-key=data/certs/client-key.pem -e 'status'
/based: [[https://github.com/chio-nzgft/docker-MariaDB-with-SSL]]