dotnet dev-certs https 
  [-c|--check] [--clean] [-ep|--export-path <PATH>]
  [--format] [-i|--import] [-np|--no-password]
  [-p|--password] [-q|--quiet] [-t|--trust]
  [-v|--verbose] [--version]
dotnet dev-certs https -h|--help

dotnet dev-certs 命令管理自签名证书,以便在本地 Web 应用开发中使用 HTTPS。 其主要功能包括:

  • 在开发过程中生成用于 HTTPS 终结点的证书。
  • 信任本地计算机上生成的证书。
  • 从本地计算机删除生成的证书。
  • 导出采用各种格式的证书,以便其他工具可以使用它。
  • 将工具生成的现有证书导入本地计算机。
  • https

    dotnet dev-certs 只有一个命令:https。 没有选项的 dotnet dev-certs https 命令检查计算机上当前用户的证书存储中是否存在开发证书。 如果命令找到开发证书,则会显示类似于以下示例的消息:

    A valid HTTPS certificate is already present.
    

    如果命令找不到开发证书,它将在当前用户的证书存储中创建一个证书,该存储区在位置 CurrentUser 中命名为 My。 证书的物理位置是随时可能更改的 .NET 运行时的实现详细信息。 在 .NET 7.0 中的 macOS 上,证书存储在用户密钥链中,并作为 PFX 文件存储:~/.aspnet/https-aspnetcore-localhost-<Thumbprint[0..5]>.pfx。

    创建证书后,该命令会显示类似于以下示例的消息:

    The HTTPS developer certificate was generated successfully.
    

    默认情况下,新创建的证书不受信任。 若要信任证书,请使用 --trust 选项。

    若要创建可用于其他工具的文件,请使用 --export-path 选项。

  • -c|--check

    检查是否存在开发证书,但不执行任何操作。 将此选项与 --trust 选项结合使用,检查证书是否不仅有效,而且受信任。

  • --clean

    使用 .NET 证书存储 API 从证书存储中删除所有 HTTPS 开发证书。 不要删除使用 --export-path 选项创建的任何物理文件。 在 .NET 7.0 中的 macOS 上,dotnet dev-certs 命令在磁盘路径上创建证书,清理操作将删除该证书文件。

    如果证书存储中至少有一个证书,该命令会显示以下示例所示的消息:

    Cleaning HTTPS development certificates
    from the machine.
    A prompt might get displayed to confirm
    the removal of some of the certificates.
    HTTPS development certificates
    successfully removed from the machine.
    
  • -ep|--export-path <PATH>

    将证书导出到文件,以便其他工具可以使用该文件。 指定导出的证书文件的完整路径,包括文件名。 创建的证书文件的类型取决于与 --export-path 一起使用的选项:

    导出的内容 --export-path --password --format PEM 证书的公共和私有部分以 PEM 格式的文件对形式导出。 密钥文件具有 .key 扩展名,并受给定密码的保护。 --export-path --no-password --format PEM 证书的公共和私有部分以 PEM 格式的文件对形式导出。 密钥文件具有 .key 扩展名,以纯文本形式导出。 选项 --no-password 仅用于内部测试。

    --export-path 一起使用时,指定导出的证书文件的格式。 有效值为 PFXPEM,不区分大小写。 PFX 是默认值。

    文件格式与文件扩展名无关。 例如,如果指定 --format pfx--export-path ./cert.pem,你将获得 PFX 格式的名为 cert.pem 的文件。

    有关将此选项与 --password--no-password 选项一起使用或单独使用此选项的效果的信息,请参阅本文前面的 --export-path

  • -i|--import <PATH>

    将提供的 HTTPS 开发证书导入本地计算机。 还将要求你指定选项 --clean,该选项会清除任何现有的 HTTPS 开发人员证书。

    PATH 指定 PFX 证书文件的路径。 通过 --password 选项提供密码。

  • -np|--no-password

    将证书导出到 PEM 格式化文件时,不会对密钥使用密码。 以纯文本形式导出密钥文件。 此选项不适用于 PFX 文件,仅供内部测试使用。

  • -p|--password

    指定要使用的密码:

  • 将开发证书导出到 PFX 或 PEM 文件时。
  • 导入 PFX 文件时。
  • 使用 --format PEM 导出时,证书的公共部分和私有部分将以 PEM 格式的文件对形式导出。 密钥文件具有 .key 扩展名,并受给定密码的保护。 除了为 --export-path 选项指定的文件名之外,该命令还会在同一目录中创建另一个具有相同名称但扩展名为 .key 的文件。 例如,以下命令将在 /home/user 目录中生成名为 localhost.pem 的文件和名为 localhost.key 的文件:

    dotnet dev-certs https --format pem -ep /home/user/localhost.pem -p $CREDENTIAL_PLACEHOLDER$
    

    在此示例中,$CREDENTIAL_PLACEHOLDER$ 表示密码。

  • -q|--quiet

    仅显示警告和错误。

  • -t|--trust

    信任本地计算机上的证书。

    如果未指定此选项,则会将证书添加到证书存储中,但不会添加到受信任的列表中。

    与选项 --check 结合使用时,验证证书是否受信任。

  • -v|--verbose

    显示调试信息。

  • 检查是否存在开发证书,如果尚不存在,请在默认证书存储中创建一个证书。 但不要信任证书。

    dotnet dev-certs https
    
  • 删除本地计算机上已存在的任何开发证书。

    dotnet dev-certs https --clean
    
  • 导入 PFX 文件。

    dotnet dev-certs https --clean --import ./certificate.pfx -p $CREDENTIAL_PLACEHOLDER$
    

    在前面的示例中,$CREDENTIAL_PLACEHOLDER$ 表示密码。

  • 检查本地计算机上是否存在受信任的开发证书。

    dotnet dev-certs https --check --trust
    
  • 创建证书、信任证书并将其导出到 PFX 文件。

    dotnet dev-certs https -ep ./certificate.pfx -p $CREDENTIAL_PLACEHOLDER$ --trust
    
  • 创建证书、信任证书并将其导出到 PEM 文件。

    dotnet dev-certs https -ep ./certificate.crt --trust --format PEM
    
  • 创建证书、信任证书并将其导出到包含私钥的 PEM 文件:

    dotnet dev-certs https -ep ./certificate.crt -p $CREDENTIAL_PLACEHOLDER$ --trust --format PEM
    
  • 通过 .NET CLI 生成自签名证书
  • 在 ASP.NET Core 中强制使用 HTTPS
  • 排查证书问题,例如证书不受信任
  • 使用 Docker over HTTPS 托管 ASP.NET Core 映像
  • 使用 Docker Compose 通过 HTTPS 托管 ASP.NET Core 映像
  •