Skip to content
Snippets Groups Projects
Commit a4eea3c2 authored by leo.muff's avatar leo.muff
Browse files

added html folder

parent d2819a66
Branches
No related tags found
No related merge requests found
......@@ -4,7 +4,7 @@
- **Certificat** : Dans le contexte de la sécurité informatique, un certificat est un document numérique permettant d’identifier et d'authentifier un utilisateur ou un service. Il contient aussi les informations nécessaires à l'établissement d'une communication sécurisée (clef publique, protocoles de chiffrements utilisés, etc).
- **Infrastructure à clef publique ou PKI (Public Key Infrastructure)** : Une PKI est un ensemble de processus basés sur l'utilisation de certificats qui permettent de chiffrer et d'authentifier les communications entre utilisateurs et services ou de service à service.
- **Politique de certification** :
- **Politique de certification** : Ensemble de décisions qui définissent les caractéristique des certificats émis. La politique de certification définit le temps de vie des certificats, la chaîne de confiance, les politiques de révocations, etc.
- **Autorité de certification ou CA (Certificate Authority)** : Une autorité de certification est un organisme qui agit comme tiers de confiance. La CA est responsable de l'émission de certificats et de leur validation. Pour être considérée comme un tiers de confiance valide, l'autorité doit être reconnue par les principaux navigateurs et systèmes d'exploitation.
https://fr.wikipedia.org/wiki/Autorit%C3%A9_de_certification
......@@ -39,8 +39,9 @@ Nous avons choisi de concevoir une entreprise fournissant une version simplifié
## Outils :
- MicroK8s (infra)
- https://www.vaultproject.io/
- [**MicroK8s**](https://microk8s.io/) : Déploiement Kubernetes dans un seul package.
- [**Vault**](https://www.vaultproject.io/) : Outil de gestion de secrets qui propose de nombreuses fonctionnalité facilitant la mise en place d'une infrastructure à clé publique.
- [**Cert-manager**](https://cert-manager.io/) : Outil de gestion de certificat pour Kubernetes
## Schéma de l'infrastructure à clef publique
......@@ -48,7 +49,7 @@ Nous avons choisi de concevoir une entreprise fournissant une version simplifié
- ChepiA
## Commandes :
## Mise en place de l'infrastructure :
### Set up k8s cluster + install Vault
......@@ -72,6 +73,8 @@ Initial Root Token: hvs.zWAYhaUkch0hfgfi18fduTvl
--> Pour déverrouiller Vault, il faut que 3 des 5 tokens créés soit renseignés. On doit ensuite se logger avec le token root
![Interface graphique de Vault vérouillée](images/vault-seal.png "Interface graphique de Vault vérouillée")
### Install tools on pod
- jq (json parsing)
......@@ -218,25 +221,38 @@ spec:
#### 1. Création du service
- Nous allons utiliser un simple serveur web Nginx pour représenter la page d'accueil de notre entreprise :
- Nous allons utiliser un simple serveur web Nginx pour représenter la page d'accueil de notre entreprise. Les étapes suivantes montrent comment créer un stockage pour le code source de notre site et déployer une instance Nginx qui monte ce stockage dans le dossier `/usr/share/nginx/html`.
1. Créer le fichier de config de la page d'accueil :
1. Créer le fichier de config des volumes qui vont stocker nos fichiers HTML (`html_volume.yaml`) :
```yaml
apiVersion: v1
kind: ConfigMap
kind: PersistentVolume
metadata:
name: nginx-configmap
namespace: default
data:
index.html: |
<html>
<h1> Bienvenue sur l'intranet de CHEPIA </h1>
<h3> Certificats gratos !! </h3>
</html>
name: pv-volume-html
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/home/mezmer/Documents/atelier_secu/html"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pv-claim-html
spec:
accessModes:
- ReadWriteOnce
storageClassName: ""
volumeName: pv-volume-html
resources:
requests:
storage: 1Gi
```
2. Créer le fichier de config du serveur :
2. Créer le fichier de config du serveur (`nginx.yaml`) :
```yaml
apiVersion: apps/v1
......@@ -260,16 +276,15 @@ spec:
ports:
- containerPort: 80
volumeMounts:
- name: nginx-index
mountPath: /usr/share/nginx/index.html
subPath: index.html
- name: nginx-index-storage
mountPath: /usr/share/nginx/html
volumes:
- name: nginx-index
configMap:
name: nginx-configmap
- name: nginx-index-storage
persistentVolumeClaim:
claimName: pv-claim-html
```
3. Appliquer les configs : `microk8s kubectl apply -f nginx-configmap.yaml`, `microk8s kubectl apply -f nginx.yaml`
3. Appliquer les configs : `microk8s kubectl apply -f html-volumes.yaml`, `microk8s kubectl apply -f nginx.yaml`
#### 2. Création du certificat du service :
......@@ -365,7 +380,7 @@ Une fois le certificat importé, on retrouve notre autorité dans la liste des C
Si on retourne sur *www.chepia.ch*, l'alerte a disparu.
![Le point d'exclamation a disparu du cadenas](images/lock.png "Le point d'exclamation a disparu du cadenas")
![Le point d'exclamation a disparu du cadenas, on peut utiliser le service de manière sécurisée.](images/lock.png "Le point d'exclamation a disparu du cadenas, on peut utiliser le service de manière sécurisée.")
### Mise à jour des certificats
......@@ -468,10 +483,15 @@ metadata:
name: chepia-ch
spec:
acme:
server: http://127.0.0.1:8200/v1/pki_int
caBundle: <root cert in PEM format encoded in base64>
server: http://127.0.0.1:8200/v1/pki_int/acme/directory
caBundle: <intermediate CA cert in PEM format encoded in base64>
privateKeySecretRef:
name: issuer-token-lmzpj
solvers:
- selector: {}
http01:
ingress:
ingressClassName: nginx
```
- Activation de la config avec `microk8s kubectl apply -f acme.yaml `
......
File added
html/images/god.jpg

2.14 MiB

html/images/logo/logo-black.png

63.2 KiB

html/images/logo/logo-color.png

117 KiB

html/images/logo/logo-no-background.png

149 KiB

html/images/logo/logo-white.png

90.4 KiB

html/images/secure.jpg

75.2 KiB

html/images/ssl-certificate.png

10.8 KiB

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Chepia</title>
<style>
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
box-sizing: border-box;
}
.container {
max-width: 1200px;
margin: 0 auto;
padding: 20px;
text-align: center;
}
img {
width: 80%;
display: block;
margin: 0 auto;
max-width: 100%;
}
</style>
</head>
<body>
<div class="container">
<h1>Chepia - Certifications for the plebs</h1>
<img src="images/god.jpg">
</div>
</body>
</html>
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-volume-html
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/home/mezmer/Documents/atelier_secu/html"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pv-claim-html
spec:
accessModes:
- ReadWriteOnce
storageClassName: ""
volumeName: pv-volume-html
resources:
requests:
storage: 1Gi
images/lock.png

32.8 KiB | W: | H:

images/lock.png

751 KiB | W: | H:

images/lock.png
images/lock.png
images/lock.png
images/lock.png
  • 2-up
  • Swipe
  • Onion skin
......@@ -19,10 +19,9 @@ spec:
ports:
- containerPort: 80
volumeMounts:
- name: nginx-index
mountPath: /usr/share/nginx/index.html
subPath: index.html
- name: nginx-index-storage
mountPath: /usr/share/nginx/html
volumes:
- name: nginx-index
configMap:
name: nginx-configmap
- name: nginx-index-storage
persistentVolumeClaim:
claimName: pv-claim-html
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment