---
title: Comment rendre un bucket OVH Object Storage public en HTTPS (guide complet)
description: "Guide pas à pas pour rendre un bucket OVH Object Storage accessible publiquement en HTTPS : création des identifiants S3, configuration AWS CLI, ACL public-read, upload de fichiers et résolution des erreurs AccessDenied."
---

# Rendre un Object Storage OVH public et accessible en HTTPS

L'objectif de ce guide est de rendre un bucket Object Storage OVH accessible publiquement en HTTPS.

## Attention au nom du bucket

Avant de créer votre bucket, choisissez un nom **sans point (`.`)**.

✅ Bon exemple :

```text
foo-bar-cdn
```

❌ Mauvais exemple :

```text
foo.bar-cdn
```

Les buckets contenant des points provoquent des problèmes de certificat SSL lorsque l'on utilise les URLs publiques de type :

```text
https://foo.bar-cdn.s3.gra.io.cloud.ovh.net
```

Le certificat wildcard présenté par OVH ne couvre pas correctement ce type de nom.

Privilégiez donc les tirets (`-`) plutôt que les points (`.`).

## Comprendre le format de l'URL HTTPS

L'URL HTTPS publique d'un objet suit généralement ce format :

```text
https://NOM_DU_BUCKET.s3.LOCALISATION.io.cloud.ovh.net/chemin/vers/fichier
```

Dans ce tutoriel, nous utiliserons :

```text
Nom du bucket : foo-bar-cdn
Localisation : gra
```

L'URL de base sera donc :

```text
https://foo-bar-cdn.s3.gra.io.cloud.ovh.net
```

Cette URL est aussi visible dans le Manager OVH, sous le nom **Virtual Host**.

## Créer un utilisateur S3 et appliquer une policy

Dans le Manager OVH :

```text
Public Cloud
  → Object Storage
  → S3 Compatible API
  → Create credentials
```

OVH fournit alors :

- Access Key ID
- Secret Access Key

Conservez précieusement la Secret Access Key, elle ne pourra généralement plus être affichée par la suite.

Il faut ensuite attribuer une policy à cet utilisateur pour lui permettre d'administrer le bucket.

Dans le Manager OVH :

```text
Public Cloud
  → Object Storage
  → Users
  → Import user access policy
```

Exemple de policy permettant d'administrer le bucket `foo-bar-cdn` :

```json
{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:ListBucket", "s3:GetBucketAcl", "s3:PutBucketAcl"],
      "Resource": ["arn:aws:s3:::foo-bar-cdn"]
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:PutObject",
        "s3:DeleteObject",
        "s3:GetObjectAcl",
        "s3:PutObjectAcl"
      ],
      "Resource": ["arn:aws:s3:::foo-bar-cdn/*"]
    }
  ]
}
```

⚠️ Attendre environ 5 minutes après la modification. Les droits ne sont pas appliqués instantanément.

## Configurer AWS CLI

Installer AWS CLI :

```bash
brew install awscli
```

Configurer un profil :

```bash
aws configure --profile ovhtmp
```

Puis saisir :

```text
AWS Access Key ID
AWS Secret Access Key
Region (gra, sbg, rbx, ...)
```

## Vérifier l'accès au bucket

Lister les buckets :

```bash
aws \
  --profile ovhtmp \
  --endpoint-url https://s3.gra.io.cloud.ovh.net \
  s3 ls
```

Lister le contenu du bucket :

```bash
aws \
  --profile ovhtmp \
  --endpoint-url https://s3.gra.io.cloud.ovh.net \
  s3 ls s3://foo-bar-cdn
```

Si vous obtenez un `AccessDenied`, il faut attribuer une policy à l'utilisateur S3.

## Vérifier l'ACL actuelle du bucket

```bash
aws \
  --profile ovhtmp \
  --endpoint-url https://s3.gra.io.cloud.ovh.net \
  s3api get-bucket-acl \
  --bucket foo-bar-cdn
```

Avant modification, vous devriez voir uniquement le propriétaire avec :

```json
"Permission": "FULL_CONTROL"
```

## Rendre le bucket public

Activer la lecture publique du bucket :

```bash
aws \
  --profile ovhtmp \
  --endpoint-url https://s3.gra.io.cloud.ovh.net \
  s3api put-bucket-acl \
  --bucket foo-bar-cdn \
  --acl public-read
```

Vérifier le résultat :

```bash
aws \
  --profile ovhtmp \
  --endpoint-url https://s3.gra.io.cloud.ovh.net \
  s3api get-bucket-acl \
  --bucket foo-bar-cdn
```

Vous devez désormais voir :

```json
{
  "Type": "Group",
  "URI": "http://acs.amazonaws.com/groups/global/AllUsers"
}
```

avec la permission :

```json
"Permission": "READ"
```

## Uploader de nouveaux fichiers en public

Pour que les nouveaux fichiers soient directement accessibles en HTTPS, il faut les uploader avec l'option `--acl public-read`.

Exemple :

```bash
aws \
  --profile ovhtmp \
  --endpoint-url https://s3.gra.io.cloud.ovh.net \
  s3 cp ./yt_ad_Brainrot_app.mp4 \
  s3://foo-bar-cdn/videos/yt-ads/2026/yt_ad_Brainrot_app.mp4 \
  --acl public-read
```

Sans cette option, le fichier peut être uploadé correctement, mais rester privé. Dans ce cas, l'URL HTTPS retournera une erreur `403 AccessDenied`.

Les fichiers uploadés directement depuis le Manager OVH ne sont pas automatiquement en `public-read`. Si vous utilisez le Manager OVH pour déposer des fichiers, il faudra ensuite appliquer l'ACL publique sur chaque objet, comme expliqué dans la section suivante.

## Vérifier les permissions d'un objet

Pour connaître les permissions appliquées à un objet en particulier :

```bash
aws \
  --profile ovhtmp \
  --endpoint-url https://s3.gra.io.cloud.ovh.net \
  s3api get-object-acl \
  --bucket foo-bar-cdn \
  --key videos/yt-ads/2026/yt_ad_Brainrot_app.mp4
```

Si l'objet est public, vous devriez voir un grant similaire à :

```json
{
  "Grantee": {
    "Type": "Group",
    "URI": "http://acs.amazonaws.com/groups/global/AllUsers"
  },
  "Permission": "READ"
}
```

Si vous ne voyez que :

```json
{
  "Permission": "FULL_CONTROL"
}
```

alors l'objet est privé et ne pourra pas être téléchargé via son URL HTTPS publique.

## Rendre les objets existants publics

Le bucket public ne rend pas automatiquement les objets déjà présents publics.

Pour un objet :

```bash
aws \
  --profile ovhtmp \
  --endpoint-url https://s3.gra.io.cloud.ovh.net \
  s3api put-object-acl \
  --bucket foo-bar-cdn \
  --key chemin/vers/fichier.mp4 \
  --acl public-read
```

Pour tous les objets d'un préfixe :

```bash
aws \
  --profile ovhtmp \
  --endpoint-url https://s3.gra.io.cloud.ovh.net \
  s3 ls s3://foo-bar-cdn/videos/ --recursive \
  | awk '{print $4}' \
  | while read key; do
      aws \
        --profile ovhtmp \
        --endpoint-url https://s3.gra.io.cloud.ovh.net \
        s3api put-object-acl \
        --bucket foo-bar-cdn \
        --key "$key" \
        --acl public-read
    done
```

## Vérifier l'accès HTTPS

Si le bucket ne contient pas de point dans son nom :

```text
https://foo-bar-cdn.s3.gra.io.cloud.ovh.net/chemin/vers/fichier.mp4
```

Tester :

```bash
curl -I https://foo-bar-cdn.s3.gra.io.cloud.ovh.net/chemin/vers/fichier.mp4
```

Résultat attendu :

```http
HTTP/2 200
```

Votre Object Storage est maintenant accessible publiquement en HTTPS.
