Compare commits
10 Commits
a96d4ccc7d
...
b9b2c12b04
| Author | SHA1 | Date |
|---|---|---|
|
|
b9b2c12b04 | |
|
|
0f5803d994 | |
|
|
a76ef2ee84 | |
|
|
534c9cf20f | |
|
|
73aabafe79 | |
|
|
019de84932 | |
|
|
d81da61ac5 | |
|
|
ee15d6be8a | |
|
|
81d1597653 | |
|
|
f8e9ba4fc0 |
|
|
@ -6,19 +6,17 @@ jobs:
|
|||
name: SonarQube Trigger
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Debug Gitea variables
|
||||
run: |
|
||||
echo "GITEA_REF: ${GITEA_REF}"
|
||||
echo "GITEA_SHA: ${GITEA_SHA}"
|
||||
echo "All env variables:"
|
||||
env
|
||||
- name: Checking out
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
# Disabling shallow clone is recommended for improving relevancy of reporting
|
||||
fetch-depth: 0
|
||||
- name: SonarQube Scan
|
||||
uses: SonarSource/sonarqube-scan-action@v7.0.0
|
||||
uses: SonarSource/sonarqube-scan-action@v7.0.0
|
||||
args: >
|
||||
-Dsonar.projectKey=pki-manager
|
||||
-Dsonar.sources=. \
|
||||
-Dsonar.host.url=${{secrets.SONAR_HOST}}
|
||||
env:
|
||||
SONAR_TOKEN: ${{ secrets.SONARQUBE_TOKEN }}
|
||||
SONAR_HOST_URL: http://infra.bv.stef.lan:9000
|
||||
SONAR_TOKEN: ${{secrets.SONAR_TOKEN}}
|
||||
SONAR_HOST_URL: ${{secrets.SONAR_HOST}}
|
||||
|
|
|
|||
|
|
@ -9,13 +9,15 @@ COPY . .
|
|||
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o main ./cmd/server
|
||||
|
||||
FROM alpine:latest
|
||||
RUN apk --no-cache add ca-certificates
|
||||
RUN apk --no-cache add ca-certificates \
|
||||
&& addgroup -S nonroot \
|
||||
&& adduser -S nonroot -G nonroot
|
||||
|
||||
WORKDIR /app
|
||||
COPY --from=builder /app/main .
|
||||
COPY --from=builder /app/internal/web ./internal/web
|
||||
COPY --from=builder /app/certs ./certs
|
||||
|
||||
USER nonroot
|
||||
EXPOSE 8080
|
||||
|
||||
CMD ["./main"]
|
||||
|
|
|
|||
|
|
@ -0,0 +1,75 @@
|
|||
# PKI-MANAGER
|
||||
Permet de creer des CA subCA et de certificat client & server
|
||||
|
||||
**Pour le moment le code est en court de develloppement et ne DOIT PAS servir en production !!**
|
||||
|
||||
Langage du moteur GO
|
||||
|
||||
Fonctionalites non encore implementées:
|
||||
- Authentification
|
||||
- Chiffrement en base
|
||||
- Ajout swagger
|
||||
- Autre fonctions d'api
|
||||
- Amélioration GUI
|
||||
|
||||
|
||||
## API
|
||||
- POST /api/v1/cas/ --> Creation d'une CA
|
||||
- GET /api/v1/cas/ --> Liste mes CAs
|
||||
- GET /api/v1/cas/:id --> Récuperation d'une CA
|
||||
- PUT /api/v1/cas/:id --> Modification d'une CA
|
||||
- DELETE /api/v1/cas/:id --> Effacement d'une CA
|
||||
- GET /api/v1/cas/:id/download/cert --> Recuperation du fichier de certificat d'une CA (Format PEM)
|
||||
- GET /api/v1/cas/:id/download/key --> Recuperation du fichier de clé d'une CA (Format PEM)
|
||||
|
||||
Idem pour les SubCA en modifiant l'appel part /api/v1/subcas/
|
||||
|
||||
Idem pour les Ceritificats en modifiant l'appel par /api/v1/certificates/
|
||||
|
||||
Ajout pour les certificats:
|
||||
|
||||
- GET /api/v1/certificates/:id/download/p12 Récuperation du certificat et de sont issuer au format pkcs12
|
||||
|
||||
## Configuration
|
||||
Créer un fichier .env à la racine du projet contenant:
|
||||
```
|
||||
MONGO_INITDB_ROOT_USERNAME=<Nom du compte admin mongo>
|
||||
MONGO_INITDB_ROOT_PASSWORD=<Mot de passe du compte admin mongo>
|
||||
JWT_SECRET=mon-super-token-my-jwt-secret
|
||||
EXTERNAL_PORT=<port expose port l'acces a l'application exemple:8080"
|
||||
```
|
||||
|
||||
## Si besoin d'accéder à la base Mongodb:
|
||||
Ajouter un export de port dans le service mongodb
|
||||
```yaml
|
||||
services:
|
||||
mongodb:
|
||||
...
|
||||
ports:
|
||||
- "27017:27017"
|
||||
volumes:
|
||||
- mongodb_data:/data/db
|
||||
- ./scripts/init-mongo.js:/docker-entrypoint-initdb.d/init-mongo.js:ro
|
||||
...
|
||||
```
|
||||
|
||||
## Dev Web
|
||||
Pour l'instant les repetoire contenant le code lié au web est monté via volume.
|
||||
|
||||
Vous pouvez donc modifier dynamiquement ce contenu sans avoir a rebuild.
|
||||
|
||||
docker-compose.yml
|
||||
```yaml
|
||||
pki-api:
|
||||
...
|
||||
volumes:
|
||||
- ./internal/web/static:/app/internal/web/static
|
||||
- ./internal/web/templates:/app/internal/web/templates
|
||||
```
|
||||
|
||||
Pour locker le webcode, retirez ces montages
|
||||
|
||||
## Lancement:
|
||||
```
|
||||
docker compose up --build -d
|
||||
```
|
||||
|
|
@ -19,14 +19,14 @@ services:
|
|||
depends_on:
|
||||
- mongodb
|
||||
ports:
|
||||
- "8080:8080"
|
||||
- "${EXTERNAL_PORT}:8080"
|
||||
environment:
|
||||
MONGODB_URI: mongodb://${MONGO_INITDB_ROOT_USERNAME}:${MONGO_INITDB_ROOT_PASSWORD}@mongodb:27017/pki_db?authSource=admin
|
||||
JWT_SECRET: ${JWT_SECRET}
|
||||
volumes:
|
||||
- ./certs:/app/certs
|
||||
- ./internal/web/static:/app/internal/web/static
|
||||
- ./internal/web/templates:/app/internal/web/templates
|
||||
# - ./internal/web/static:/app/internal/web/static
|
||||
# - ./internal/web/templates:/app/internal/web/templates
|
||||
|
||||
volumes:
|
||||
mongodb_data:
|
||||
|
|
|
|||
|
|
@ -600,8 +600,8 @@ async fetchSubCAs() {
|
|||
street_address: data.street_address || '',
|
||||
postal_code: data.postal_code || '',
|
||||
email: data.email || '',
|
||||
key_size: parseInt(data.key_size) || 4096,
|
||||
valid_years: parseInt(data.valid_years) || 10,
|
||||
key_size: Number.parseInt(data.key_size) || 4096,
|
||||
valid_years: Number.parseInt(data.valid_years) || 10,
|
||||
is_root: data.is_root === 'true'
|
||||
})
|
||||
});
|
||||
|
|
@ -641,8 +641,8 @@ async fetchSubCAs() {
|
|||
province: data.province || '',
|
||||
locality: data.locality || '',
|
||||
parent_ca_id: data.parent_ca_id,
|
||||
key_size: parseInt(data.key_size) || 4096,
|
||||
valid_years: parseInt(data.valid_years) || 5
|
||||
key_size: Number.parseInt(data.key_size) || 4096,
|
||||
valid_years: Number.parseInt(data.valid_years) || 5
|
||||
})
|
||||
});
|
||||
|
||||
|
|
@ -680,8 +680,8 @@ async fetchSubCAs() {
|
|||
dns_names: dnsNames,
|
||||
ip_addresses: ipAddresses,
|
||||
issuer_ca_id: data.issuer_ca_id,
|
||||
key_size: parseInt(data.key_size) || 2048,
|
||||
valid_days: parseInt(data.valid_days) || 365
|
||||
key_size: Number.parseInt(data.key_size) || 2048,
|
||||
valid_days: Number.parseInt(data.valid_days) || 365
|
||||
})
|
||||
});
|
||||
|
||||
|
|
@ -900,4 +900,4 @@ async fetchSubCAs() {
|
|||
// Initialize when DOM is ready
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
window.pki = new PKIManager();
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -0,0 +1,2 @@
|
|||
sonar.projectKey=pki-manager
|
||||
|
||||
Loading…
Reference in New Issue