[TOC]
# Protocole suivi
Connecté en tant que `support` sur `192.168.10.102`
## Création du *self-signed certificat*
- `openssl req -newkey rsa:4096 -x509 -sha256 -days 3650 -nodes -out 192.168.10.102.crt -keyout 192.168.10.102.key`
:::info
`-days 3650` : durée de validité du certificat (ici 10 ans)
:::
## Activation du HTTPS
- `sudo vim /etc/gitlab/gitlab.rb`
- édition de `external_url` à `external_url "https://gitlab.example.com"`
- édition de `letsencrypt['enable']` à `letsencrypt['enable'] = false`
## Réécriture de la `external_url` du serveur
- édition de `external_url` à `external_url "https://192.168.10.102"`
## Redirection des requêtes `HTTP` (port 80) vers `HTTPS` (port 443)
- édition de `nginx['redirect_http_to_https']` à `nginx['redirect_http_to_https'] = true`
## Ajout du certificat
- `sudo mkdir -p /etc/gitlab/ssl`
- `sudo chmod 755 /etc/gitlab/ssl`
- `sudo cp 192.168.10.102.key 192.168.10.102.crt /etc/gitlab/ssl/`
## Reconfiguration du service `gitlab`
- `sudo gitlab-ctl reconfigure`
# Rendre Git compatible avec le certificat
## Windows 10
- Télécharger le certificat : `\\192.168.10.100\serveurM\ECHANGES\COMMUN\192.168.10.102_cert.zip` sur le serveur
- Décompresser l'archive dans le dossier personnel au chemin : `C:\Users\user\ssl_cert`
(créer le dossier `ssl_cert`)
:::warning
Mot de passe `merio`
:::
- Dans un `Git BASH` lancer la commande :
` git config --global http.sslCAInfo /c/Users/user/ssl_cert/192.168.10.102.crt`
:::info
Cette commande modifie le fichier `C:\Users\user\.gitconfig` et y ajoute une référence vers le certificat pour l'approuver

:::
# Rendre les navigateurs compatibles avec le certificat
- Première connexion à https://192.168.10.102 :

- Cliquer sur `Avancé` -> `Continuer vers 192.168.10.102 (non sécurisé)`
- 
# Amélioration possibles
Une bonne amélioration serait d'héberger notre propre autorité de certification sur le LAN de MERIO.
On pourrait également héberger notre propre DNS.
## Guides
- [Create Your Own SSL Certificate Authority for Local HTTPS Development](https://deliciousbrains.com/ssl-certificate-authority-for-local-https-development/#why-https-locally)
- [Setup your private DNS server](https://thilinaviraj.medium.com/setup-your-private-dns-server-with-bind-a37a29cc3065)
# Commandes utiles
## Mise à jour des adresses des *remotes*
Dans le cas ou l'adresse du repo distant (i.e. le *remote*) change, il est nécessaire de mettre à jour l'adresse pointée par les repos déjà clonés.
- Lister les *remotes* du repo
`git remote -v `

- Changer l'URL associée au *remote* `origin`
- SSH
`git remote set-url origin https://github.com/OWNER/REPOSITORY.git`
- HTTPS
`git remote set-url origin git@github.com:OWNER/REPOSITORY.git`
Source : [Managing remote repositories](https://docs.github.com/en/get-started/getting-started-with-git/managing-remote-repositories?platform=windows)
# Sources
- https://middlewaretechnologies.in/2022/07/how-to-secure-a-gitlab-server-using-self-signed-certificate.html
- https://docs.gitlab.com/omnibus/settings/ssl/index.html#configure-https-manually
- https://docs.gitlab.com/omnibus/settings/nginx.html#enable-https
- https://docs.gitlab.com/omnibus/settings/ssl/#redirect-http-requests-to-https