# CertificateAuthorityCollectionResourceExtensions Methods

- Package: [Aspire.Hosting](/reference/api/csharp/aspire.hosting.md)
- Type: [CertificateAuthorityCollectionResourceExtensions](/reference/api/csharp/aspire.hosting/certificateauthoritycollectionresourceextensions.md)
- Kind: `Methods`
- Members: `6`

Provides extension methods for [CertificateAuthorityCollection](/reference/api/csharp/aspire.hosting/certificateauthoritycollection.md).

## AddCertificateAuthorityCollection(IDistributedApplicationBuilder, string)

- Name: `AddCertificateAuthorityCollection(IDistributedApplicationBuilder, string)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<CertificateAuthorityCollection>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/bd20f904cde09ecb9c9ae5116a6f13614bf2d7c2/src/Aspire.Hosting/ApplicationModel/CertificateAuthorityCollectionResourceExtensions.cs#L24-L37)

Adds a new [CertificateAuthorityCollection](/reference/api/csharp/aspire.hosting/certificateauthoritycollection.md) to the application model. This resource is intended for local development run time configuration and is excluded from published artifacts.

```csharp
public static class CertificateAuthorityCollectionResourceExtensions
{
    public static IResourceBuilder<CertificateAuthorityCollection> AddCertificateAuthorityCollection(
        this IDistributedApplicationBuilder builder,
        string name)
    {
        // ...
    }
}
```

## Parameters

- `builder` ([IDistributedApplicationBuilder](/reference/api/csharp/aspire.hosting/idistributedapplicationbuilder.md))
  The [IDistributedApplicationBuilder](/reference/api/csharp/aspire.hosting/idistributedapplicationbuilder.md).
- `name` (`string`)
  The name of the certificate authority collection resource.

## Returns

`IResourceBuilder<CertificateAuthorityCollection>` -- An `ApplicationModel.IResourceBuilder`1` instance.

## Remarks

This method is not available in polyglot app hosts.

## ATS metadata

### Ignored by ATS

- Reason: All companion With* methods require X509Certificate2 -- the resource would be unusable in polyglot hosts (zero configurable methods).

## WithCertificate(IResourceBuilder<CertificateAuthorityCollection>, X509Certificate2)

- Name: `WithCertificate(IResourceBuilder<CertificateAuthorityCollection>, X509Certificate2)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<CertificateAuthorityCollection>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/bd20f904cde09ecb9c9ae5116a6f13614bf2d7c2/src/Aspire.Hosting/ApplicationModel/CertificateAuthorityCollectionResourceExtensions.cs#L50-L54)

Adds a certificate to the [CertificateAuthorityCollection.Certificates](/reference/api/csharp/aspire.hosting/certificateauthoritycollection/properties.md#certificates) collection.

```csharp
public static class CertificateAuthorityCollectionResourceExtensions
{
    public static IResourceBuilder<CertificateAuthorityCollection> WithCertificate(
        this IResourceBuilder<CertificateAuthorityCollection> builder,
        X509Certificate2 certificate)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<CertificateAuthorityCollection>`)
  The `ApplicationModel.IResourceBuilder`1`.
- `certificate` (`X509Certificate2`)
  The certificate to add.

## Returns

`IResourceBuilder<CertificateAuthorityCollection>` -- The updated `ApplicationModel.IResourceBuilder`1`.

## Remarks

This method is not available in polyglot app hosts.

## ATS metadata

### Ignored by ATS

- Reason: Uses X509Certificate2 which is not ATS-compatible.

## WithCertificates(IResourceBuilder<CertificateAuthorityCollection>, X509Certificate2Collection)

- Name: `WithCertificates(IResourceBuilder<CertificateAuthorityCollection>, X509Certificate2Collection)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<CertificateAuthorityCollection>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/bd20f904cde09ecb9c9ae5116a6f13614bf2d7c2/src/Aspire.Hosting/ApplicationModel/CertificateAuthorityCollectionResourceExtensions.cs)

Adds a collection of certificates to the [CertificateAuthorityCollection.Certificates](/reference/api/csharp/aspire.hosting/certificateauthoritycollection/properties.md#certificates) collection.

```csharp
public static class CertificateAuthorityCollectionResourceExtensions
{
    public static IResourceBuilder<CertificateAuthorityCollection> WithCertificates(
        this IResourceBuilder<CertificateAuthorityCollection> builder,
        X509Certificate2Collection certificates)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<CertificateAuthorityCollection>`)
  The `ApplicationModel.IResourceBuilder`1`.
- `certificates` (`X509Certificate2Collection`)
  The collection of certificates to add.

## Returns

`IResourceBuilder<CertificateAuthorityCollection>` -- The updated `ApplicationModel.IResourceBuilder`1`.

## Remarks

This method is not available in polyglot app hosts.

## ATS metadata

### Ignored by ATS

- Reason: Uses X509Certificate2Collection which is not ATS-compatible.

## WithCertificates(IResourceBuilder<CertificateAuthorityCollection>, IEnumerable<X509Certificate2>)

- Name: `WithCertificates(IResourceBuilder<CertificateAuthorityCollection>, IEnumerable<X509Certificate2>)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<CertificateAuthorityCollection>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/bd20f904cde09ecb9c9ae5116a6f13614bf2d7c2/src/Aspire.Hosting/ApplicationModel/CertificateAuthorityCollectionResourceExtensions.cs)

Adds a collection of certificates to the [CertificateAuthorityCollection.Certificates](/reference/api/csharp/aspire.hosting/certificateauthoritycollection/properties.md#certificates) collection.

```csharp
public static class CertificateAuthorityCollectionResourceExtensions
{
    public static IResourceBuilder<CertificateAuthorityCollection> WithCertificates(
        this IResourceBuilder<CertificateAuthorityCollection> builder,
        IEnumerable<X509Certificate2> certificates)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<CertificateAuthorityCollection>`)
  The `ApplicationModel.IResourceBuilder`1`.
- `certificates` (`IEnumerable<X509Certificate2>`)
  The collection of certificates to add.

## Returns

`IResourceBuilder<CertificateAuthorityCollection>` -- The updated `ApplicationModel.IResourceBuilder`1`.

## Remarks

This method is not available in polyglot app hosts.

## ATS metadata

### Ignored by ATS

- Reason: Uses X509Certificate2 which is not ATS-compatible.

## WithCertificatesFromFile(IResourceBuilder<CertificateAuthorityCollection>, string, Func<X509Certificate2, bool>)

- Name: `WithCertificatesFromFile(IResourceBuilder<CertificateAuthorityCollection>, string, Func<X509Certificate2, bool>)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<CertificateAuthorityCollection>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/bd20f904cde09ecb9c9ae5116a6f13614bf2d7c2/src/Aspire.Hosting/ApplicationModel/CertificateAuthorityCollectionResourceExtensions.cs#L159-L173)

Adds certificates from a PEM file to the [CertificateAuthorityCollection.Certificates](/reference/api/csharp/aspire.hosting/certificateauthoritycollection/properties.md#certificates) collection.

```csharp
public static class CertificateAuthorityCollectionResourceExtensions
{
    public static IResourceBuilder<CertificateAuthorityCollection> WithCertificatesFromFile(
        this IResourceBuilder<CertificateAuthorityCollection> builder,
        string pemFilePath,
        Func<X509Certificate2, bool>? filter = null)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<CertificateAuthorityCollection>`)
  The `ApplicationModel.IResourceBuilder`1`.
- `pemFilePath` (`string`)
  The path to the PEM file.
- `filter` (`Func<X509Certificate2, bool>`) `optional`
  An optional filter to apply to the loaded certificates before they are added to the collection.

## Returns

`IResourceBuilder<CertificateAuthorityCollection>` -- The updated `ApplicationModel.IResourceBuilder`1`.

## Remarks

This method is not available in polyglot app hosts.

This example adds certificates from a PEM file located at "../path/to/certificates.pem".

```csharp
builder.AddCertificateAuthorityCollection("my-ca")
    .WithCertificatesFromFile("../path/to/certificates.pem");
```

This example adds only certificates that are not expired from a PEM file located at "../path/to/certificates.pem".

```csharp
builder.AddCertificateAuthorityCollection("my-ca")
    .WithCertificatesFromFile("../path/to/certificates.pem", c => c.NotAfter > DateTime.UtcNow);
```

## ATS metadata

### Ignored by ATS

- Reason: Uses Func<X509Certificate2, bool> which is not ATS-compatible.

## WithCertificatesFromStore(IResourceBuilder<CertificateAuthorityCollection>, StoreName, StoreLocation, Func<X509Certificate2, bool>)

- Name: `WithCertificatesFromStore(IResourceBuilder<CertificateAuthorityCollection>, StoreName, StoreLocation, Func<X509Certificate2, bool>)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<CertificateAuthorityCollection>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/bd20f904cde09ecb9c9ae5116a6f13614bf2d7c2/src/Aspire.Hosting/ApplicationModel/CertificateAuthorityCollectionResourceExtensions.cs#L119-L130)

Adds certificates from a certificate store to the [CertificateAuthorityCollection.Certificates](/reference/api/csharp/aspire.hosting/certificateauthoritycollection/properties.md#certificates) collection.

```csharp
public static class CertificateAuthorityCollectionResourceExtensions
{
    public static IResourceBuilder<CertificateAuthorityCollection> WithCertificatesFromStore(
        this IResourceBuilder<CertificateAuthorityCollection> builder,
        StoreName storeName,
        StoreLocation storeLocation,
        Func<X509Certificate2, bool>? filter = null)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<CertificateAuthorityCollection>`)
  The `ApplicationModel.IResourceBuilder`1`.
- `storeName` (`StoreName`)
  The name of the certificate store.
- `storeLocation` (`StoreLocation`)
  The location of the certificate store.
- `filter` (`Func<X509Certificate2, bool>`) `optional`
  An optional filter to apply to the certificates.

## Returns

`IResourceBuilder<CertificateAuthorityCollection>` -- The updated `ApplicationModel.IResourceBuilder`1`.

## Remarks

This method is not available in polyglot app hosts.

This example adds all certificates from the "Root" store in the "LocalMachine" location.

```csharp
builder.AddCertificateAuthorityCollection("my-ca")
    .WithCertificatesFromStore(StoreName.Root, StoreLocation.LocalMachine);
```

This example adds only certificates that are not expired from the "My" store in the "CurrentUser" location.

```csharp
builder.AddCertificateAuthorityCollection("my-ca")
    .WithCertificatesFromStore(StoreName.My, StoreLocation.CurrentUser, c => c.NotAfter > DateTime.UtcNow);
```

## ATS metadata

### Ignored by ATS

- Reason: Uses StoreName and StoreLocation which are not ATS-compatible.
