Aspnetcore: 无法在macOS Catalina上创建开发证书

创建于 2020-03-05  ·  78评论  ·  资料来源: dotnet/aspnetcore

描述错误

尝试使用dev-certs工具在我的macOS Catalina(10.15.4 Beta(19E242d))上生成开发证书,但不起作用。

输出:

iRuiMSFT-MBP:~ rmarinho$ dotnet dev-certs https
A valid HTTPS certificate with a key accessible across security partitions was not found. The following command will run to fix it:
'sudo security set-key-partition-list -D localhost -S unsigned:,teamid:UBF8T346G9'
This command will make the certificate key accessible across security partitions and might prompt you for your password. For more information see: https://aka.ms/aspnetcore/2.1/troubleshootcertissues
A valid HTTPS certificate with a key accessible across security partitions was not found. The following command will run to fix it:
'sudo security set-key-partition-list -D localhost -S unsigned:,teamid:UBF8T346G9'
This command will make the certificate key accessible across security partitions and might prompt you for your password. For more information see: https://aka.ms/aspnetcore/3.1/troubleshootcertissues
password to unlock /Users/rmarinho/Library/Keychains/login.keychain-db: 
keychain: "/Users/rmarinho/Library/Keychains/login.keychain-db"
version: 512
class: 0x00000011 
attributes:
    0x00000000 <uint32>=<NULL>
    0x00000001 <blob>="com.apple.AppleMediaServices.mediaToken.macappstore"
    0x00000002 <blob>=<NULL>
    0x00000003 <uint32>=<NULL>
    0x00000004 <uint32>=<NULL>
    0x00000005 <uint32>=<NULL>
    0x00000006 <blob>=<NULL>
    0x00000007 <blob>=<NULL>
    0x00000008 <blob>=<NULL>
    0x00000009 <uint32>=0x00000000 
    0x0000000A <uint32>=0x00000000 
    0x0000000B <uint32>=0x00000000 
    0x0000000C <blob>=<NULL>
    0x0000000D <blob>=<NULL>
    0x0000000E <uint32>=<NULL>
    0x0000000F <uint32>=<NULL>
    0x00000010 <uint32>=<NULL>
    0x00000011 <uint32>=<NULL>
    0x00000012 <uint32>=<NULL>
    0x00000013 <uint32>=<NULL>
    0x00000014 <uint32>=<NULL>
    0x00000015 <uint32>=<NULL>
    0x00000016 <uint32>=<NULL>
    0x00000017 <uint32>=<NULL>
    0x00000018 <uint32>=<NULL>
    0x00000019 <uint32>=<NULL>
    0x0000001A <uint32>=<NULL>
security: SecKeychainItemCopyAccess: A missing value was detected.
Something went wrong. The HTTPS developer certificate could not be created.

重现

跑步

dotnet dev-certs https

更多技术细节

  • ASP.NET Core版本:3.1
  • 包括dotnet --info的输出
  • 您正在运行的IDE(VS / VS Code / VS4Mac)及其版本
iRuiMSFT-MBP:~ rmarinho$ dotnet --info
.NET Core SDK (reflecting any global.json):
 Version:   3.1.102
 Commit:    573d158fea

Runtime Environment:
 OS Name:     Mac OS X
 OS Version:  10.15
 OS Platform: Darwin
 RID:         osx.10.15-x64
 Base Path:   /usr/local/share/dotnet/sdk/3.1.102/

Host (useful for support):
  Version: 3.1.2
  Commit:  916b5cba26

.NET Core SDKs installed:
  2.1.4 [/usr/local/share/dotnet/sdk]
  2.1.200 [/usr/local/share/dotnet/sdk]
  2.1.300 [/usr/local/share/dotnet/sdk]
  2.1.301 [/usr/local/share/dotnet/sdk]
  2.1.302 [/usr/local/share/dotnet/sdk]
  2.1.403 [/usr/local/share/dotnet/sdk]
  2.1.500 [/usr/local/share/dotnet/sdk]
  2.1.505 [/usr/local/share/dotnet/sdk]
  2.1.700 [/usr/local/share/dotnet/sdk]
  2.1.701 [/usr/local/share/dotnet/sdk]
  2.2.101 [/usr/local/share/dotnet/sdk]
  2.2.107 [/usr/local/share/dotnet/sdk]
  2.2.203 [/usr/local/share/dotnet/sdk]
  2.2.300 [/usr/local/share/dotnet/sdk]
  3.0.100-rc1-014190 [/usr/local/share/dotnet/sdk]
  3.0.100 [/usr/local/share/dotnet/sdk]
  3.1.100-preview1-014459 [/usr/local/share/dotnet/sdk]
  3.1.100-preview2-014569 [/usr/local/share/dotnet/sdk]
  3.1.100-preview3-014645 [/usr/local/share/dotnet/sdk]
  3.1.100 [/usr/local/share/dotnet/sdk]
  3.1.101 [/usr/local/share/dotnet/sdk]
  3.1.102 [/usr/local/share/dotnet/sdk]

.NET Core runtimes installed:
  Microsoft.AspNetCore.All 2.1.0 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.1.1 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.1.2 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.1.5 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.1.6 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.1.9 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.1.11 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.1.12 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.2.0 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.2.4 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.2.5 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.App 2.1.0 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.1.1 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.1.2 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.1.5 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.1.6 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.1.9 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.1.11 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.1.12 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.2.0 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.2.4 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.2.5 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 3.0.0-preview5-19227-01 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 3.0.0-preview9.19424.4 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 3.0.0-rc1.19457.4 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 3.0.0 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 3.1.0-preview1.19508.20 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 3.1.0-preview2.19528.8 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 3.1.0-preview3.19555.2 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 3.1.0 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 3.1.1 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 3.1.2 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 2.0.5 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.0.7 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.0 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.1 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.2 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.5 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.6 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.9 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.11 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.12 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.13 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.14 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.15 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.2.0 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.2.4 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.2.5 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.2.7 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 3.0.0-rc1-19456-20 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 3.0.0 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 3.1.0-preview1.19506.1 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 3.1.0-preview2.19525.6 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 3.1.0-preview3.19553.2 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 3.1.0 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 3.1.1 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 3.1.2 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
affected-medium area-commandlinetools bug feature-devcerts severity-major

最有用的评论

重要更新

这是我们仍在研究的最新SDK版本(3.1.102)中的一个持续存在的问题。
要变通解决此问题,请按照下列步骤操作

所有78条评论

@rmarinho我正在经历完全相同的错误,并且具有完全相同的开发堆栈。
我浏览了所有建议从系统密钥中删除证书,运行--clean和--trust命令的页面,但是没有任何效果。

有人对下一步尝试有进一步的想法吗? 不胜感激。 谢谢。

@rmarinho感谢您与我们联系。

你能检查几件事吗?
您的钥匙串上是否有“ localhost”证书? (如果是这样,假设它是一个由asp.net核心生成的)
您可以手动删除它吗?
还要检查系统证书中是否存在相同的证书,并从那里也将其删除。

您可以运行dotnet dev-certs https --check并报告退出代码吗?

嗨,我删除了我遇到的一个错误,但它确实在钥匙串上创建了一个新错误。
我仅在登录钥匙串上没有任何系统证书。

iRuiMSFT-MBP:~ rmarinho$ dotnet dev-certs https --check
A valid HTTPS certificate was found but it may not be accessible across security partitions. Run dotnet dev-certs https to ensure it will be accessible during development.

您可以尝试从命令行运行security set-key-partition-list -D localhost -S unsigned:,teamid:UBF8T346G9 <<login-keychain>>并查看是否成功吗? (将<<logi-keychain>>替换

我设法解决了这个问题。

  • 创建一个自签名证书
  • 在命令行上运行dotnet工具install --global dotnet-dev-certs
  • 重新启动盒子

我为与安全分区有关的错误而苦恼。 好奇怪我仍然不知道它的根本原因是什么。

  • 在命令行上运行dotnet工具install --global dotnet-dev-certs

您不应该这样做,否则我不确定它是否会起作用,因为dotnet-dev-certs工具与SDK捆绑在一起,我相信那些工具会优先使用。

此问题很可能与Mac OS上的公证有关。 您是否下载了适用于Mac OS的安装程序,还是使用了二进制发行版? 我相信两者都应经过公证,但这可能是问题的根源

我下载了Mac OS的安装程序。 也许3.1版不包含开发证书。 会是这样吗? --check选项向我显示了(不包括证书)。

不包括证书,证书是在计算机上生成的。 您在使用macOS Catalina (10.15.4 Beta (19E242d))吗?

@javiercn我认为我的最后一个dotnet sdk是由Visual Studio for Mac更新系统安装的。

我正在使用最新的Beta(10.15.4 Beta(19E250c)

在✋排队

同样的问题。 3周前的工作突然停止了。 我通过dotnet dev-certs https --clean进行了清理,但是dotnet dev-certs https --trust然后要求我提供我的login.keychain-db的密码并拒绝它。 我什至通过security set-keychain-password重置了它,但没有成功。

=== Visual Studio Community 2019 for Mac ===

Version 8.4.8 (build 2)
Installation UUID: ddc1ff0c-8d88-428e-8706-9c5852e78933
    GTK+ 2.24.23 (Raleigh theme)
    Xamarin.Mac 5.16.1.25 (issue-7441-d16-3-vsmac / 881172e73)

    Package version: 606000166

=== Mono Framework MDK ===

Runtime:
    Mono 6.6.0.166 (2019-08/d9001b5ae70) (64-bit)
    Package version: 606000166

=== Roslyn (Language Service) ===

3.4.0-beta4-19562-05+ff930dec4565e2bc424ad3bf3e22ecb20542c87d


=== .NET Core SDK ===

SDK: /usr/local/share/dotnet/sdk/3.1.102/Sdks
SDK Versions:
    3.1.102
    3.1.101
    3.1.100
    3.0.101
    3.0.100
    2.2.402
    2.1.802
MSBuild SDKs: /Library/Frameworks/Mono.framework/Versions/6.6.0/lib/mono/msbuild/Current/bin/Sdks

=== .NET Core Runtime ===

Runtime: /usr/local/share/dotnet/dotnet
Runtime Versions:
    3.1.2
    3.1.1
    3.1.0
    3.0.1
    3.0.0
    2.2.7
    2.1.15
    2.1.14
    2.1.13


=== Build Information ===

Release ID: 804080002
Git revision: 4f35aa7e44fb398379e512d0bfd6f8df8d34b5ac
Build date: 2020-02-27 16:16:52+00
Build branch: release-8.4
Xamarin extensions: 4f35aa7e44fb398379e512d0bfd6f8df8d34b5ac

=== Operating System ===

Mac OS X 10.15.3
Darwin 19.3.0 Darwin Kernel Version 19.3.0
    Thu Jan  9 20:58:23 PST 2020
    root:xnu-6153.81.5~1/RELEASE_X86_64 x86_64

@aspnetde您是否也在Mac OS Catalina beta中?

您也在Mac OS Catalina beta中吗?

@javiercn不。 普通版。

@aspnetde您可以提供有关该错误的详细信息吗? (控制台输出等)

您可以尝试手动运行命令,看看是否可以解决问题?

您可以尝试手动运行命令,看看是否可以解决问题?

如我的第一条评论所述,我已经做到了(遵循docs )。

这是另一轮失败的比赛:

thomas@TB-MBP-2017 ~ % dotnet dev-certs https --check     
A valid HTTPS certificate was found but it may not be accessible across security partitions. Run dotnet dev-certs https to ensure it will be accessible during development.
thomas@TB-MBP-2017 ~ % dotnet dev-certs https --clean     
Cleaning HTTPS development certificates from the machine. This operation might require elevated privileges. If that is the case, a prompt for credentials will be displayed.
HTTPS development certificates successfully removed from the machine.
thomas@TB-MBP-2017 ~ % dotnet dev-certs https --check
No valid certificate found.
thomas@TB-MBP-2017 ~ % dotnet dev-certs https --trust     
A valid HTTPS certificate with a key accessible across security partitions was not found. The following command will run to fix it:
'sudo security set-key-partition-list -D localhost -S unsigned:,teamid:UBF8T346G9'
This command will make the certificate key accessible across security partitions and might prompt you for your password. For more information see: https://aka.ms/aspnetcore/2.1/troubleshootcertissues
A valid HTTPS certificate with a key accessible across security partitions was not found. The following command will run to fix it:
'sudo security set-key-partition-list -D localhost -S unsigned:,teamid:UBF8T346G9'
This command will make the certificate key accessible across security partitions and might prompt you for your password. For more information see: https://aka.ms/aspnetcore/3.1/troubleshootcertissues
Trusting the HTTPS development certificate was requested. If the certificate is not already trusted we will run the following command:
'sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain <<certificate>>'
This command might prompt you for your password to install the certificate on the system keychain.
Password:
password to unlock /Users/thomas/Library/Keychains/login.keychain-db: 
keychain: "/Users/thomas/Library/Keychains/login.keychain-db"
version: 512
class: 0x0000000F 
attributes:
    0x00000000 <uint32>=0x0000000F 
    0x00000001 <blob>="<key>"
    0x00000002 <blob>=<NULL>
    0x00000003 <uint32>=0x00000001 
    0x00000004 <uint32>=0x00000000 
    0x00000005 <uint32>=0x00000000 
    0x00000006 <blob>=0xFB53860E4AA8B4728D5B0FEF29B3090935FBD083  "\373S\206\016J\250\264r\215[\017\357)\263\011\0115\373\320\203"
    0x00000007 <blob>=<NULL>
    0x00000008 <blob>=0x7B38373139316361322D306663392D313164342D383439612D3030303530326235323132327D00  "{87191ca2-0fc9-11d4-849a-000502b52122}\000"
    0x00000009 <uint32>=0x0000002A  "\000\000\000*"
    0x0000000A <uint32>=0x00000800 
    0x0000000B <uint32>=0x00000800 
    0x0000000C <blob>=0x0000000000000000 
    0x0000000D <blob>=0x0000000000000000 
    0x0000000E <uint32>=0x00000000 
    0x0000000F <uint32>=0x00000000 
    0x00000010 <uint32>=0x00000001 
    0x00000011 <uint32>=0x00000000 
    0x00000012 <uint32>=0x00000001 
    0x00000013 <uint32>=0x00000000 
    0x00000014 <uint32>=0x00000001 
    0x00000015 <uint32>=0x00000000 
    0x00000016 <uint32>=0x00000001 
    0x00000017 <uint32>=0x00000000 
    0x00000018 <uint32>=0x00000000 
    0x00000019 <uint32>=0x00000000 
    0x0000001A <uint32>=0x00000000 
security: SecKeychainItemSetAccessWithPassword: The user name or passphrase you entered is not correct.
thomas@TB-MBP-2017 ~ % dotnet dev-certs https --check
A valid HTTPS certificate was found but it may not be accessible across security partitions. Run dotnet dev-certs https to ensure it will be accessible during development.
thomas@TB-MBP-2017 ~ % 

我有同样的问题。

跑步时
命令:
dotnet dev-certs https -c
结果:
A valid HTTPS certificate was found but it may not be accessible across security partitions. Run dotnet dev-certs https to ensure it will be accessible during development.

命令:
dotnet开发人员证书https -t -v
结果:
security: SecKeychainItemCopyAccess: The specified item is no longer valid. It may have been deleted from the keychain. Listing 'HTTPS' certificates on 'CurrentUser\My'. '1' found matching the criteria. SUBJECT - THUMBPRINT - NOT BEFORE - EXPIRES - HAS PRIVATE KEY CN=localhost - 4AED6BC2B253402E22B060BC1FB646EBEDA33D37 - 3/5/2020 9:48:35 PM - 3/5/2021 9:48:35 PM - True Checking certificates for validity. Listing valid certificates '1' found matching the criteria. SUBJECT - THUMBPRINT - NOT BEFORE - EXPIRES - HAS PRIVATE KEY CN=localhost - 4AED6BC2B253402E22B060BC1FB646EBEDA33D37 - 3/5/2020 9:48:35 PM - 3/5/2021 9:48:35 PM - True Listing invalid certificates '0' found matching the criteria. SUBJECT - THUMBPRINT - NOT BEFORE - EXPIRES - HAS PRIVATE KEY Listing 'HTTPS' certificates on 'LocalMachine\My'. '0' found matching the criteria. SUBJECT - THUMBPRINT - NOT BEFORE - EXPIRES - HAS PRIVATE KEY Checking certificates for validity. Listing valid certificates '0' found matching the criteria. SUBJECT - THUMBPRINT - NOT BEFORE - EXPIRES - HAS PRIVATE KEY Listing invalid certificates '0' found matching the criteria. SUBJECT - THUMBPRINT - NOT BEFORE - EXPIRES - HAS PRIVATE KEY Filtering found certificates to those with a subject equal to 'CN=localhost' '1' found matching the criteria. SUBJECT - THUMBPRINT - NOT BEFORE - EXPIRES - HAS PRIVATE KEY CN=localhost - 4AED6BC2B253402E22B060BC1FB646EBEDA33D37 - 3/5/2020 9:48:35 PM - 3/5/2021 9:48:35 PM - True Listing certificates excluded from consideration. '0' found matching the criteria. SUBJECT - THUMBPRINT - NOT BEFORE - EXPIRES - HAS PRIVATE KEY Failed to make certificate key accessible Exception message: Error making the key accessible across partitions. Something went wrong. The HTTPS developer certificate could not be created.

Mac OS版本:
image

我们也有这个问题!

我也面临这个问题。 发现该问题始于ASP Net Core SDK 3.1.102的安装。 我正在使用Mac OS 10.15.3 Beta。

删除SDK 3.1.102之后,问题消失了。

使用此删除SDK 3.1.102
须藤rm -rf /usr/local/share/dotnet/sdk/3.1.102
须藤rm -rf /usr/local/share/dotnet/shared/Microsoft.NETCore.App/3.1.2
须藤rm -rf /usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/3.1.2
须藤rm -rf /usr/local/share/dotnet/host/fxr/3.1.2

在针对本地证书的SDK 3.1.101和SDK 3.1.102之间进行调查时,我注意到的是3.1.102缺少System上的本地自签名证书,而登录localhost自签名证书未标记为始终受信任,而SDK 3.1 .101具有登录名和系统本地主机自签名证书,并且所有信任级别均设置为始终信任。

对我来说,我找不到/usr/local/share/dotnet/host/fxr/3.1.102
相反,我删除了/usr/local/share/dotnet/host/fxr/3.1.2并开始工作。

对我来说,我找不到/usr/local/share/dotnet/host/fxr/3.1.102
相反,我删除了/usr/local/share/dotnet/host/fxr/3.1.2并开始工作。

我不好的是,fxr中的文件是3.1.2。 我正在基于内存进行写入,因为我已经删除了那些文件。 更新了我的步骤

关于此线程的报告很多,因此在我们调查的过程中,我将尝试给出一些手动步骤,说明如何解决/缓解此问题:
请参阅此处以获取有关如何删除,手动访问跨分区和信任证书的说明。

对于那些受影响的人,建议您执行以下操作:

  • 手动清理您的证书。
  • 使用dotnet dev-certs https创建一个新证书

    • 如果此步骤无法使证书跨分区访问,请按照上面提供的要点中的说明手动尝试使其跨分区访问。

    • 如果使证书可跨分区访问的说明失败,请按照以下说明进行操作。

    • 要解锁自己,请获取证书的SHA256签名(您可以通过检查证书来进行钥匙串访问)

      image

    • 在〜/ .dotnet /中创建一个名为certificate.<<sha256>>.sentinel的文件

  • 手动信任证书,方法是从“钥匙串访问”中导出证书,并按照文档中的说明信任security add-trusted-cert

此问题的重要详细信息

为了帮助我们调查此问题,以下信息将为我们提供帮助:

  • 操作系统版本
  • 已安装的SDK列表

    • 如果您还记得他们安装的顺序,请附上。

    • 您是否通过下载的.tar.gz并行运行二进制分发版?

    • 您安装的所有SDK是否经过公证?

    • 提示:如果未对安装程序进行公证,则Mac OS会阻止安装,而您必须手动解除阻止。

    • 执行上述步骤是否可以解决您的问题?

    • 如果没有,您是否可以提供有关手动步骤失败以及命令输出的详细信息。

    • 如果是这样,请提供您遵循的具体步骤,以帮助我们缩小问题范围并帮助其他人解决。

我也面临这个问题。 发现该问题始于ASP Net Core SDK 3.1.102的安装。 我正在使用Mac OS 10.15.3 Beta。

删除SDK 3.1.102之后,问题消失了。

对我来说,一切都很好,直到我更新了SDK,但这解决了问题。
我刚刚删除了该SDK版本并重新生成了我的证书:

须藤rm -rf /usr/local/share/dotnet/sdk/3.1.102
须藤rm -rf /usr/local/share/dotnet/shared/Microsoft.NETCore.App/3.1.2
须藤rm -rf /usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/3.1.2
须藤rm -rf /usr/local/share/dotnet/host/fxr/3.1.2

  • dotnet dev-certs https --clean
  • dotnet dev-certs https -t

谢谢@frozenfroze!

重要更新

这是我们仍在研究的最新SDK版本(3.1.102)中的一个持续存在的问题。
要变通解决此问题,请按照下列步骤操作

您可以找到securityd进程的PID并运行log stream --process <PID> 。 这应该提供对OS级别正在发生的事情的更多了解。 (systemd是处理后的对KeyChain项目的访问管理)
同样,这可能是违反直觉的,但是“ dotnet”是否来自3.1是很重要的。 (由于所有版本都覆盖相同的二进制文件,因此顺序很重要,并且可用的SDK列表仅是提示)
您可以使用codesign -v -d --entitlements --extract-certificates /usr/local/share/dotnet/dotnet (或所有版本路径)进行检查,以查看是否使用带符号或无符号二进制。

我对此也有严重的麻烦。 我在2周前遇到了问题,并根据@frozenfroze的评论进行了docker支持,但未成功,因此我捣毁了从github克隆的项目,现在问题又回来了。

我什至无法创建dev证书。 任何进展?

dotnet dev-certs https-检查
找不到有效的证书。

dotnet开发人员证书https --clean
从计算机清除HTTPS开发证书。 此操作可能需要提升的特权。 在这种情况下,将显示提示输入凭据的提示。
HTTPS开发证书已成功从计算机中删除。

dotnet开发人员证书https
找不到有效的HTTPS证书,其密钥可跨安全分区访问。 将运行以下命令对其进行修复:
'sudo安全性设置密钥分区列表-D本地主机-S unsigned :, teamid:UBF8T346G9 '
此命令将使证书密钥可跨安全分区访问,并可能提示您输入密码。 有关更多信息,请参见: https :
找不到有效的HTTPS证书,其密钥可跨安全分区访问。 将运行以下命令对其进行修复:
'sudo安全性设置密钥分区列表-D本地主机-S unsigned :, teamid:UBF8T346G9 '
此命令将使证书密钥可跨安全分区访问,并可能提示您输入密码。 有关更多信息,请参见: https :
出了些问题。 无法创建HTTPS开发人员证书。

dotnet --info
.NET Core SDK(反映任何global.json):
版本:3.1.201
提交:b1768b4ae7

运行环境:
操作系统名称:Mac OS X
作业系统版本:10.14
操作系统平台:Darwin
RID:osx.10.14-x64
基本路径:/usr/local/share/dotnet/sdk/3.1.201/

主持人(对支持有用):
版本:3.1.3
提交:4a9f85e9f8

安装的.NET Core SDK:
3.0.100 [/ usr / local / share / dotnet / sdk]
3.1.101 [/ usr / local / share / dotnet / sdk]
3.1.200 [/ usr / local / share / dotnet / sdk]
3.1.201 [/ usr / local / share / dotnet / sdk]

安装的.NET Core运行时:
Microsoft.AspNetCore.App 3.0.0 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 3.1.1 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 3.1.3 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.NETCore.App 2.1.13 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.15 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.16 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 3.0.0 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 3.1.1 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 3.1.3 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]

要安装其他.NET Core运行时或SDK,请执行以下操作:
https://aka.ms/dotnet-download

确保您的KeyChain已解锁@fcbogle。 我还建议使用KeyChain并查找所有localhost证书。

@wfurt,谢谢您的评论。
我已经完成了您的建议(花了几个小时尝试调试)。 这是我机器的输出。 昨晚我将macOS升级到了Catalina。 系统详细信息和密钥管理输出如下:

dotnet --info
.NET Core SDK(反映任何global.json):
版本:3.1.201
提交:b1768b4ae7

运行环境:
操作系统名称:Mac OS X
操作系统版本:10.15
操作系统平台:Darwin
RID:osx.10.15-x64
基本路径:/usr/local/share/dotnet/sdk/3.1.201/

主持人(对支持有用):
版本:3.1.3
提交:4a9f85e9f8

安装的.NET Core SDK:
3.1.201 [/ usr / local / share / dotnet / sdk]

安装的.NET Core运行时:
Microsoft.AspNetCore.App 3.1.3 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.NETCore.App 3.1.3 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]

要安装其他.NET Core运行时或SDK,请执行以下操作:
https://aka.ms/dotnet-download

================================================== =====================
dotnet dev-certs https-检查
找不到有效的证书。
dotnet dev-certs https --trust
找不到有效的HTTPS证书,其密钥可跨安全分区访问。 将运行以下命令对其进行修复:
'sudo安全性设置密钥分区列表-D本地主机-S unsigned :, teamid:UBF8T346G9 '
此命令将使证书密钥可跨安全分区访问,并可能提示您输入密码。 有关更多信息,请参见: https :
找不到有效的HTTPS证书,其密钥可跨安全分区访问。 将运行以下命令对其进行修复:
'sudo安全性设置密钥分区列表-D本地主机-S unsigned :, teamid:UBF8T346G9 '
此命令将使证书密钥可跨安全分区访问,并可能提示您输入密码。 有关更多信息,请参见: https :
请求信任HTTPS开发证书。 如果证书不受信任,我们将运行以下命令:
'sudo安全性add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain <>'
该命令可能会提示您输入密码,以将证书安装在系统钥匙串上。
将HTTPS开发人员证书保存到当前用户个人证书存储区时出错。

dotnet开发人员证书https -t -v
找不到有效的HTTPS证书,其密钥可跨安全分区访问。 将运行以下命令对其进行修复:
'sudo安全性设置密钥分区列表-D本地主机-S unsigned :, teamid:UBF8T346G9 '
此命令将使证书密钥可跨安全分区访问,并可能提示您输入密码。 有关更多信息,请参见: https :
找不到有效的HTTPS证书,其密钥可跨安全分区访问。 将运行以下命令对其进行修复:
'sudo安全性设置密钥分区列表-D本地主机-S unsigned :, teamid:UBF8T346G9 '
此命令将使证书密钥可跨安全分区访问,并可能提示您输入密码。 有关更多信息,请参见: https :
请求信任HTTPS开发证书。 如果证书不受信任,我们将运行以下命令:
'sudo安全性add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain <>'
该命令可能会提示您输入密码,以将证书安装在系统钥匙串上。
在“ CurrentUser \ My”上列出“ HTTPS”证书。
在“ LocalMachine \ My”上列出“ HTTPS”证书。
发现“ 0”符合条件。
主题-缩略图-之前-到期-具有私钥
检查证书的有效性。
列出有效证书
发现“ 0”符合条件。
主题-缩略图-之前-到期-具有私钥
列出无效的证书
发现“ 0”符合条件。
主题-缩略图-之前-到期-具有私钥
将找到的证书过滤到主题等于“ CN = localhost”的那些证书
发现“ 0”符合条件。
主题-缩略图-之前-到期-具有私钥
上市证书不包括在内。
发现“ 0”符合条件。
主题-缩略图-之前-到期-具有私钥
本机上没有有效的证书。 尝试创建一个。
将证书保存到证书存储中。
将证书保存在证书存储“ CurrentUser \ My”中时出错。
异常消息:找不到默认的钥匙串。
将HTTPS开发人员证书保存到当前用户个人证书存储区时出错。

您是否有可能通过SSH或未在GUI中登录的系统上执行此操作?

当我先ssh 127.0.0.1然后以同一用户身份运行相同的命令时,我能够重现类似的故障。 现在,当钥匙串被锁定且应用需要访问时,操作系统将提示密码对话框以对其进行解锁。 通过SSH(或没有GUI会话)是不可能的,并且加密操作将失败。
在这种情况下,您需要运行security unlock-keychain ,这将要求您输入登录密码,并且它将为该会话解锁KeyChain。 这部分不特定于Catalina。

我还尝试以“标准”用户身份运行时生成证书,并且始终会失败,并抱怨用户不在突然列表中。 可能尚不清楚发生了什么,我想知道我们是否可以预先检查此信息,或者我们能否获得更好的指导@javiercn。

当我写上一个回复时,我错过keychain could not be found.您的帖子@fcbogle中的keychain could not be found. 。 您可以运行security list-keychainssecurity default-keychain吗?
您是否运行过KeyChain Access应用程序? 您应该在那里至少看到SystemLogin钥匙串。

@wfurt ,您好,这里是这些命令的输出。 感谢您的关注!
安全列表钥匙串
“ /库/钥匙串/System.keychain”
安全默认钥匙串
安全性:SecKeychainCopyDefault:找不到默认的钥匙串。

这是我的钥匙串:
image

我认为我们走在正确的轨道上。 list命令不显示您的登录钥匙串,并且未设置默认值。 当我在系统上运行它时,我得到:

$ security list-keychain
    "/Users/furt/Library/Keychains/login.keychain-db"
    "/Library/Keychains/System.keychain"
$ security default-keychain
    "/Users/furt/Library/Keychains/login.keychain-db" 

现在,很好奇该应用程序显示“登录”钥匙串,而命令行工具却没有。
如果右键单击Login钥匙串,是否有“默认设置”选项? 如果是的话,那会改变命令的输出吗? 我没有弄清楚如何在gui中获得钥匙串的位置,但是将其设置为默认值可能会有所帮助。

您还可以验证HOME环境变量的值吗? 当我取消设置或将其指向“错误”位置时,我得到的输出与您相同。

$ HOME=/tmp/boo security list-keychain
    "/Library/Keychains/System.keychain"
$ HOME=/tmp/boo security default-keychain
security: SecKeychainCopyDefault: A default keychain could not be found.

谢谢! 好的,我必须修复完成的$ HOME环境变量。
这是以前命令(包括$ HOME变量)的输出

Franks-iMac:~ frankbogle$ echo $HOME
/Users/frankbogle
Franks-iMac:~ frankbogle$ security list-keychain
    ""
    "/Users/frankbogle/Library/Keychains/login.keychain-db"
    "/Library/Keychains/System.keychain"
Franks-iMac:~ frankbogle$ security default-keychain
    "/Users/frankbogle/Library/Keychains/login.keychain-db"
Franks-iMac:~ frankbogle$

我似乎有一个空字符串:钥匙串中的"" 。 我在用户界面中看不到

我会备份您现有的钥匙串,您可以尝试使用security delete-keychain删除它。 但是,可以有更多的KeyChains,这样您就不必打扰了。 dotnet dev-certs https --trust现在为您工作吗?
请注意,HOME还用于其他用途,例如程序包缓存和其他.NET文件。

@wfurt-成功。 多谢您协助解决此问题! 非常感谢您的帮助!
dotnet dev-certs https -t -v Trusting the HTTPS development certificate was requested. If the certificate is not already trusted we will run the following command: 'sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain <<certificate>>' This command might prompt you for your password to install the certificate on the system keychain. Listing 'HTTPS' certificates on 'CurrentUser\My'. '1' found matching the criteria. SUBJECT - THUMBPRINT - NOT BEFORE - EXPIRES - HAS PRIVATE KEY CN=localhost - 16CC4B15F0AD8D8B430F55ED03709C13947BD3B7 - 30/03/2020 23:27:02 - 30/03/2021 23:27:02 - True Checking certificates for validity. Listing valid certificates '1' found matching the criteria. SUBJECT - THUMBPRINT - NOT BEFORE - EXPIRES - HAS PRIVATE KEY CN=localhost - 16CC4B15F0AD8D8B430F55ED03709C13947BD3B7 - 30/03/2020 23:27:02 - 30/03/2021 23:27:02 - True Listing invalid certificates '0' found matching the criteria. SUBJECT - THUMBPRINT - NOT BEFORE - EXPIRES - HAS PRIVATE KEY Listing 'HTTPS' certificates on 'LocalMachine\My'. '1' found matching the criteria. SUBJECT - THUMBPRINT - NOT BEFORE - EXPIRES - HAS PRIVATE KEY CN=localhost - 16CC4B15F0AD8D8B430F55ED03709C13947BD3B7 - 30/03/2020 23:27:02 - 30/03/2021 23:27:02 - False Checking certificates for validity. Listing valid certificates '1' found matching the criteria. SUBJECT - THUMBPRINT - NOT BEFORE - EXPIRES - HAS PRIVATE KEY CN=localhost - 16CC4B15F0AD8D8B430F55ED03709C13947BD3B7 - 30/03/2020 23:27:02 - 30/03/2021 23:27:02 - False Listing invalid certificates '0' found matching the criteria. SUBJECT - THUMBPRINT - NOT BEFORE - EXPIRES - HAS PRIVATE KEY Filtering found certificates to those with a subject equal to 'CN=localhost' '2' found matching the criteria. SUBJECT - THUMBPRINT - NOT BEFORE - EXPIRES - HAS PRIVATE KEY CN=localhost - 16CC4B15F0AD8D8B430F55ED03709C13947BD3B7 - 30/03/2020 23:27:02 - 30/03/2021 23:27:02 - True CN=localhost - 16CC4B15F0AD8D8B430F55ED03709C13947BD3B7 - 30/03/2020 23:27:02 - 30/03/2021 23:27:02 - False Listing certificates excluded from consideration. '0' found matching the criteria. SUBJECT - THUMBPRINT - NOT BEFORE - EXPIRES - HAS PRIVATE KEY Found valid certificates present on the machine. '2' found matching the criteria. SUBJECT - THUMBPRINT - NOT BEFORE - EXPIRES - HAS PRIVATE KEY CN=localhost - 16CC4B15F0AD8D8B430F55ED03709C13947BD3B7 - 30/03/2020 23:27:02 - 30/03/2021 23:27:02 - True CN=localhost - 16CC4B15F0AD8D8B430F55ED03709C13947BD3B7 - 30/03/2020 23:27:02 - 30/03/2021 23:27:02 - False Selected certificate '1' found matching the criteria. SUBJECT - THUMBPRINT - NOT BEFORE - EXPIRES - HAS PRIVATE KEY CN=localhost - 16CC4B15F0AD8D8B430F55ED03709C13947BD3B7 - 30/03/2020 23:27:02 - 30/03/2021 23:27:02 - True Trying to export the certificate. A valid HTTPS certificate is already present.

我很高兴它解决了。 我知道发生的事情并不总是很明显,而Catalina并没有使其变得更容易。

使用dotnet-sdk-3.1.201时,此问题在Ubuntu 18.04上仍然存在。

如果您在Linux上有问题,请打开新的问题@ajbozdar。 这里的所有讨论都特定于macOS,而Catalina则特定于macOS,因为它具有明显的实现和限制。
唯一相关的一点是Linux还依赖HOME变量来查找用户证书存储和其他.NET文件的位置。

对我来说,通过运行以下命令可以解决此问题:

  • dotnet dev-certs https --clean这将从计算机中清除HTTPS开发证书,它可能会要求您输入密码。

然后,我运行以下命令:

  • dotnet dev-certs https --trust

最后,HTTPS开发人员证书已成功生成

@javiercn在其批处理文件中提出的解决方案对我有用,只需替换它所属的密码即可,效果很好! 谢谢。

@javiercn的脚本对我来说也很顺利。 谢谢。 我花了一天的时间解决这个问题。

更新资料

帮助我们解决此问题

如果遇到此问题,可以尝试以下方法并将结果发布在这里吗?
验证“ localhost”身份实际上在登录钥匙串中:
security find-identity -p ssl-server -s localhost ~/Library/Keychains/Login.keychain

手动运行以下命令:
sudo security set-key-partition-list -D localhost -S unsigned:,teamid:UBF8T346G9 ~/Library/Keychains/Login.keychain

验证密钥分区条目是否存在:
security dump-keychain -a ~/Library/Keychains/Login.keychain | grep -sirB 3 -A 1 UBF8T346G9

收集sysdiagnose(sudo sysdiagnose)并私下与我们共享(请勿在此问题上发布文件

关于#21592我是从钥匙链上得到的
寻找与“本地主机”匹配的身份

策略:SSL(服务器)
匹配身份
1)161E0C4142F4E5230E6AD64BE895E15AF57004B7“ localhost”
找到1个身份

仅有效身份
1)161E0C4142F4E5230E6AD64BE895E15AF57004B7“ localhost”
找到1个有效身份
当我目视检查时看到两个证书,一个是根CA

我尝试运行的Web ui仍然失败,并显示证书错误

Screenshot 2020-05-07 at 21 56 13

我运行了generate.sh,但似乎没有用

./generate.sh
生成2048位RSA私钥
...... +++
................................................... .......... +++

将新的私钥写入“ key.pem”

导入了1个身份。
密码:
解锁密码/Users/apple/Library/Keychains/login.keychain-db:
钥匙串:“ / Users / apple / Library / Keychains / login.keychain-db”
版本:512
类别:0x00000011
属性:
0x00000000=
0x00000001=“ com.apple.AppleMediaServices.mediaToken.macappstore”
0x00000002=
0x00000003=
0x00000004=
0x00000005=
0x00000006=
0x00000007=
0x00000008=
0x00000009= 0x00000000
0x0000000A= 0x00000000
0x0000000B= 0x00000000
0x0000000C=
0x0000000D=
0x0000000E=
0x0000000F=
0x00000010=
0x00000011=
0x00000012=
0x00000013=
0x00000014=
0x00000015=
0x00000016=
0x00000017=
0x00000018=
0x00000019=
0x0000001A=
安全性:SecKeychainItemCopyAccess:检测到缺少值。

dotnet --info
.NET Core SDK(反映任何global.json):
版本:3.1.201
提交:b1768b4ae7

运行环境:
操作系统名称:Mac OS X
操作系统版本:10.15
操作系统平台:Darwin
RID:osx.10.15-x64
基本路径:/usr/local/share/dotnet/sdk/3.1.201/

主持人(对支持有用):
版本:3.1.3
提交:4a9f85e9f8

安装的.NET Core SDK:
3.0.100 [/ usr / local / share / dotnet / sdk]
3.1.200 [/ usr / local / share / dotnet / sdk]
3.1.201 [/ usr / local / share / dotnet / sdk]

安装的.NET Core运行时:
Microsoft.AspNetCore.App 3.0.0 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 3.1.2 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 3.1.3 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.NETCore.App 2.1.17 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 3.0.0 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 3.1.2 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 3.1.3 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]

@XiaroanZhang失败的步骤是最后一个步骤,即set-key-partition-list之一,因此,如果您尝试运行应用程序就可以了(必须关闭并重新打开浏览器)

好的...所以,我再次清理了。 将解决方法脚本复制到外壳文件中。 关闭所有浏览器并运行脚本。 在VS4Mac中启动了Web ui应用程序并运行了它。 它请求访问我授予的钥匙链(与以前的所有行为有很大不同),并且有效。..所以,我感谢你@javiercn ,但是如果这些事情不做的话,那将是很棒的首先(重复)介绍(重复)。 :)我将保留脚本以备将来参考...;)

Catalina更改不是.NET选择@ thales-man。 我知道这可能令人沮丧,但我们只是在努力跟上。

不,但是您是一个数十亿美元的组织,试图把java变成20年前的另一个地方

@XiaroanZhang失败的步骤是最后一个步骤,即set-key-partition-list之一,因此,如果您尝试运行应用程序就可以了(必须关闭并重新打开浏览器)

非常感谢。👍

大家好,

我只是有同样的问题。 我设法通过允许信任尝试运行该应用程序后生成的本地主机证书来解决该问题。

每次尝试运行时,仍然需要输入钥匙串密码,终端仍会提示该应用程序失败,但实际上它会按预期在浏览器中运行。

Screen Shot 2020-05-20 at 10 17 21 AM

大家好,

我只是有同样的问题。 我设法通过允许信任尝试运行该应用程序后生成的本地主机证书来解决该问题。

每次尝试运行时,仍然需要输入钥匙串密码,终端仍会提示该应用程序失败,但实际上它会按预期在浏览器中运行。

Screen Shot 2020-05-20 at 10 17 21 AM

通过@javiercn在他的批处理文件中运行脚本,问题将消失。 然后等待适当的修复。

我在这里确认自己也遇到了这个问题,并且我正在Mojave(10.14.6)上运行。 触发它的是今天晚上安装了3.1.300 SDK,以便我可以运行新的Blazor WASM位。 白天和今天之前,我一直在愉快地使用本地HTTPS进行开发。 我以前正在运行SDK 3.1.100。

诊断如下; 重要的是要注意,我主要以不是管理员或sudoers文件中的普通用户( jim )的身份运行。 我以Administrator / admin身份运行提升的工作。 所以...

  1. 我已经从Jim用户的登录钥匙串中清除了所有名为localhost的证书。 还将其从系统钥匙串中删除。
  2. 运行的admin我跑dotnet dev-certs https --trust ,并提示输入凭据。 该命令成功完成。
  3. jim身份运行security find-identity ...命令,我发现0个身份,0个身份匹配。
  4. admin身份运行security find-identity ...命令,我发现1个身份,找到1个有效身份。
  5. 在4所示的指纹在指纹匹配localhost证书,我可以看到Keychain AccessSystem钥匙扣(在登录到Mac桌面作为我的日常jim用户)。
  6. 我以admin身份运行sudo security set-key-partition-list ...命令,成功运行。
  7. 我运行security dump-keychain命令...但是不确定我在寻找什么,输出在这里-> dump-keychain.txt

如果然后运行一个简单的Kestrel Web服务器,该服务器配置为以admin侦听HTTPS,那么一切都很好。

但是,如果我尝试执行与jim用户相同的操作,则会收到以下异常:

crit: Microsoft.AspNetCore.Server.Kestrel[0] Unable to start Kestrel. System.InvalidOperationException: Unable to configure HTTPS endpoint. No server certificate was specified, and the default developer certificate could not be found or is out of date. To generate a developer certificate run 'dotnet dev-certs https'. To trust the certificate (Windows and macOS only) run 'dotnet dev-certs https --trust'. For more information on configuring HTTPS see https://go.microsoft.com/fwlink/?linkid=848054. at Microsoft.AspNetCore.Hosting.ListenOptionsHttpsExtensions.UseHttps(ListenOptions listenOptions, Action`1 configureOptions)

我非常想从我的常规jim用户那里恢复在Kestrel中运行HTTPS站点的功能,就像在SDK 3.1.100之前一样。 谢谢!

我有一个sysdiagnose文件,可以与适当确认和安全的电子邮件地址共享。

一个建议...是否可以使用不尝试将证书配置为系统范围内共享的选项(至少在MacOS上)来更新dev-certs ? 只要我的登录钥匙串中有localhost证书,那么对于本地开发来说就足够了吗?

编辑:我已经卸载了最新版本的SDK,并返回到3.1.100。 我从jimadmin系统和登录钥匙串中清除了本地主机证书。 再次以dev-cert --trust作为管理员用户生成。 当红est运行为jim ,浏览器被提示输入不受信任的证书,我可以解决该问题,但并不理想。

FWIW。 我也遇到了这个问题,还有另一个不相关的问题。 我已经在密码中输入了€,在将密码更改为仅包含后,让我们说更多的ascii友好字符,都解决了我的两个问题。

这还是坏了。 对我有用的是删除所有SDK,直到我回到3.1.100。 这显然会因VS进行的每次更新而中断。

有人介意解决此问题吗?

@aspnetde我们正在努力解决此问题。

最新的SDK 5.0-preview4 SDK包含用于解决此问题的工具的更新版本。 一旦我们有足够的信心新方法不会引入其他问题,我们就计划修补当前的LTS SDK。

按照此链接中的步骤解决了问题
解决证书问题

OS X-证书不受信任

  • 打开KeyChain访问。
  • 选择系统钥匙串。
  • 检查是否存在本地主机证书。
  • 检查图标上是否包含+号,以表示所有用户都信任它。
  • 从系统钥匙串中删除证书。
  • 运行以下命令:
    dotnet开发人员证书https --clean
    dotnet dev-certs https --trust

以上职位均不起作用。 我正在将Catalina 10.15.5与SDK 5.0.100-PREVIEW.6.20318.15结合使用

每次我运行该应用程序时,都会提示我安装证书。 输入密码,创建证书,但随后得到:

_System.InvalidOperationException:“无法配置HTTPS端点。未指定服务器证书,并且找不到默认的开发者证书或该证书已过期。\ n要生成开发者证书,请运行'dotnet dev-certs https'。要信任证书(仅Windows和macOS)运行'dotnet dev-certs https --trust'。\ n有关配置HTTPS的更多信息,请参见https://go.microsoft.com/fwlink/?linkid=848054。

请帮忙!

@ChadNedzlek感谢您告诉我们。

Preview6应该可以正常工作,因为我们切换到了没有此问题的其他方法。 您能否为我们提供有关您的环境的更多详细信息?

您是否可以确保您的钥匙串中没有任何本地主机证书(不在用户钥匙串中,在系统钥匙串中),使用dotnet dev-certs https --trust运行该工具并检查证书在钥匙串中是否存在? (您可能需要关闭和打开钥匙串)。

@javiercn嗨,哈维尔,谢谢您的参与。我已经做了所有事情,但是由于故障原因,我再次运行了它,结果是一样的,请参见下文:

1个
SystemCerts

2
LoginCerts

3
AfterTrust

4
SystemCertsAfter

5
LoginCertsAfter

6
Prompt

7
VSError

@ChamaCR感谢您提供详细信息。 我怀疑您可能有使用3.1 SDK的旧VS 4 Mac版本,并由于使用旧方法(显然在您的计算机上损坏)安装了第二个证书而导致了问题。

您能否再次清理钥匙串(对此感到抱歉,我知道这很痛苦),并尝试从命令行运行该应用程序? 确保dotnet --info反映了Preview6 SDK

@javiercn很抱歉延迟,昨天我有一些差事要

我最终删除了VS + SDK ...,现在我正在用WIN10创建一个训练营:(

@ChamaCR如果再次发生,则可以使用--debug从命令行运行该工具,并使用dotnet-trace捕获跟踪。 这将有助于我们在将来深入研究。

我遇到了同样的问题。 我今晚刚刚更新到3.1.301,之前的更新为3.1.10x(我记不清次要号码)。

我使用https://dotnet.microsoft.com/download/dotnet-core/scripts中的脚本首先安装了3.1.301,但这似乎并没有在预期的位置进行设置。 我仍然会看到运行3.1.10x。 因此,我按预期下载了软件包安装程序和该设置3.1.301。

我先使用dotnet new blazorwasm -o CICalc ,然后再使用dotnet run 。 我遇到了这个问题。 我安装了一些2.2.x SDK,因此我使用dotnet卸载工具将其删除。

我无法通过它生成证书的阶段。 我可以看到钥匙串中有一个证书设置,但是它不可信。 我已经尝试过链接到此页面的脚本,但是它给了我相同的结果。

我可以在钥匙串中更改HTTPS的受信任设置,然后允许我继续进行。 我不确定-trust选项是否会执行所有操作。 这是一个足够的解决方法,还是我会遇到其他问题?

下面的其他详细信息。

谢谢,

尼尔

macOS 10.15.5

%dotnet --list-sdks
3.1.301 [/ usr / local / share / dotnet / sdk]

%dotnet-列表运行时间
Microsoft.AspNetCore.All 2.2.7 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.All]
Microsoft.AspNetCore.App 3.1.5 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.NETCore.App 3.1.5 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]

我已经从“钥匙串访问”中手动删除了本地主机证书。

%dotnet开发人员证书https --clean
从计算机清除HTTPS开发证书。 此操作可能需要提升的特权。 在这种情况下,将显示提示输入凭据的提示。
HTTPS开发证书已成功从计算机中删除。
%dotnet开发人员证书https
找不到有效的HTTPS证书,其密钥可跨安全分区访问。 将运行以下命令对其进行修复:
'sudo安全性设置密钥分区列表-D本地主机-S unsigned :, teamid:UBF8T346G9 '
此命令将使证书密钥可跨安全分区访问,并可能提示您输入密码。 有关更多信息,请参见: https :
找不到有效的HTTPS证书,其密钥可跨安全分区访问。 将运行以下命令对其进行修复:
'sudo安全性设置密钥分区列表-D本地主机-S unsigned :, teamid:UBF8T346G9 '
此命令将使证书密钥可跨安全分区访问,并可能提示您输入密码。 有关更多信息,请参见: https :
密码:
解锁密码/Users/neil/Library/Keychains/login.keychain-db:
钥匙串:“ / Users / neil / Library / Keychains / login.keychain-db”
版本:512
类别:0x00000011
属性:
0x00000000=
0x00000001=“ com.apple.AppleMediaServices.mediaToken.macappstore”
0x00000002=
0x00000003=
0x00000004=
0x00000005=
0x00000006=
0x00000007=
0x00000008=
0x00000009= 0x00000000
0x0000000A= 0x00000000
0x0000000B= 0x00000000
0x0000000C=
0x0000000D=
0x0000000E=
0x0000000F=
0x00000010=
0x00000011=
0x00000012=
0x00000013=
0x00000014=
0x00000015=
0x00000016=
0x00000017=
0x00000018=
0x00000019=
0x0000001A=
安全性:SecKeychainItemCopyAccess:检测到缺少值。

在与上一条消息相同的平台上,我运行了:
%dotnet dev-certs https-详细

输出为:

在“ CurrentUser \ My”上列出“ HTTPS”证书。
找到符合条件的“ 1”。
主题-缩略图-之前-到期-具有私钥
CN =本地主机-C5F12C7AACE0803C8DBCEC2F5B3650D7D8A08056-02/07/2020 01:19:42-02/07/2021 01:19:42-是
检查证书的有效性。
列出有效证书
找到符合条件的“ 1”。
主题-缩略图-之前-到期-具有私钥
CN =本地主机-C5F12C7AACE0803C8DBCEC2F5B3650D7D8A08056-02/07/2020 01:19:42-02/07/2021 01:19:42-是
列出无效的证书
发现“ 0”符合条件。
主题-缩略图-之前-到期-具有私钥
在“ LocalMachine \ My”上列出“ HTTPS”证书。
发现“ 0”符合条件。
主题-缩略图-之前-到期-具有私钥
检查证书的有效性。
列出有效证书
发现“ 0”符合条件。
主题-缩略图-之前-到期-具有私钥
列出无效的证书
发现“ 0”符合条件。
主题-缩略图-之前-到期-具有私钥
将找到的证书过滤到主题等于“ CN = localhost”的那些证书
找到符合条件的“ 1”。
主题-缩略图-之前-到期-具有私钥
CN =本地主机-C5F12C7AACE0803C8DBCEC2F5B3650D7D8A08056-02/07/2020 01:19:42-02/07/2021 01:19:42-是
上市证书不包括在内。
发现“ 0”符合条件。
主题-缩略图-之前-到期-具有私钥
无法访问证书密钥
异常消息:使密钥可跨分区访问时出错。
出了些问题。 无法创建HTTPS开发人员证书。

我还遇到了来自@digidol的完全相同的消息,它告诉我在尝试通过以下方式创建dev-certs时检测到缺少的值:
%dotnet开发人员证书https

我也在运行MacOS Catalina 10.15.5和带有最新.NET Core SDK 3.1.301的最新Visual Studio。

但是,我可能有一种可能的解决方法来使调试在Visual Studio中工作。 这是我所做的:

  1. 打开Visual Studio并创建一个新的Web应用程序(MVC)
  2. 我选择了.NET Core 3.1和“不进行身份验证”(不确定是否有所不同)
  3. 运行项目
  4. 当提示您运行dotnet dev-certs https命令时,单击“取消”。
  5. 当系统仍然要求运行该应用程序时,请单击“运行”。
  6. Visual Studio应该编译并运行代码,并在浏览器中打开该站点,但是浏览器会说该站点不受信任。
  7. 单击浏览器中的选项,后果自负,并告诉它信任证书。 那时我需要输入密码。
  8. 之后,该站点加载良好,并且仍链接到调试器。
  9. 每次要运行该应用程序时,都必须单击“取消”,然后单击“运行”,但浏览器应记住该证书是受信任的。

同样,这不是解决方案,但似乎是一个不错的解决方法,直到可以解决该错误为止。 我希望这有帮助。

约翰·D

@jdelano此处描述的脚本是否无法为您解决问题? https://gist.github.com/javiercn/d04855b7a3581bf97d1ab9597935413f#file -generate-sh

非常感谢@javiercn
一件事; 更新脚本以删除以前生成的localhost证书会很好。 如果您在运行脚本时未删除现有的localhost证书,则最终将拥有多个证书,它将无法解决问题。

@ardaozceviz我不确定在不冒险删除其他本地证书的情况下如何做到这一点,这就是为什么我没有这样做。 在同一要点上,有说明使用钥匙串手动删除证书。

@javiercn不幸的是,该脚本也不起作用。 我收到一条消息,指出检测到缺少值。

@jdelano运行此命令时? udo security set-key-partition-list -D localhost -S unsigned:,teamid:UBF8T346G9 $loginKeyChain;您可以忽略它,它仍然可以正常工作。 我已经从脚本中删除了它。

@javiercn好的,但是我仍然在Visual Studio中收到一条消息,提示找不到有效的开发证书,它需要再次运行dev-certs命令。 我可以单击“取消”并运行该应用程序,但是我不确定该行为与上面在解决方法中发布的行为有何不同。

@jdelano是否在运行脚本之前清除了用户和系统钥匙串上的证书?

@javiercn好的,我再次完成了所有步骤,这次可以了! 不过,我不确定我之前错过了什么。 真奇怪。 不过,感谢您的脚本!

@jdelano没问题,这个问题应该在.NET Core 5.0的最新预览版中得到解决,并且我们希望一旦确认它不会破坏其他人,便会将其回移植到3.1。

重新安装后,Visual Studio会为我固定证书,它只是询问AppStore密码

我注意到的是,无论我运行dotnet dev-certs https --clean; dotnet dev-certs https --trust多少次,直到重新安装dotnet core sdk都无法解决该问题。 因此,我正在为两个客户端项目进行积极开发-一个使用dotnet core 2.2,另一个使用dotnet core 3.1。 似乎使用一个SDK安装的有效的受信任localhost证书在另一个证书中将无法使用。 重新颁发证书,重新启动计算机,不会执行任何操作。 唯一有帮助的是,每次切换项目时都要重新安装相关的sdk。 微软似乎存在一些错误,因为sdk无法共享dotnet-dev-certs工具,并且安装一个sdk会覆盖dotnet-dev-certs中的某些文件。 它似乎不是很健壮。

嗨! 我正面临着同样的问题,而我无法找到正确的解决方案。

macOS卡塔利娜10.15.6

dotnet --info
.NET Core SDK(反映任何global.json):
版本:3.1.302
提交:41faccf259

运行环境:
操作系统名称:Mac OS X
操作系统版本:10.15
操作系统平台:Darwin
RID:osx.10.15-x64
基本路径:/usr/local/share/dotnet/sdk/3.1.302/

主持人(对支持有用):
版本:3.1.6
提交:3acd9b0cd1

安装的.NET Core SDK:
3.1.302 [/ usr / local / share / dotnet / sdk]

安装的.NET Core运行时:
Microsoft.AspNetCore.App 3.1.6 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.NETCore.App 2.1.20 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 3.1.6 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]

要安装其他.NET Core运行时或SDK,请执行以下操作:
https://aka.ms/dotnet-download

我已经从钥匙串UI中删除了“ localhost”证书。

当我跑步时:

安全列表钥匙串
“ /用户/ fabrizio /库/钥匙串/login.keychain-db”
“ /库/钥匙串/System.keychain”

安全默认钥匙串
“ /用户/ fabrizio /库/钥匙串/login.keychain-db”

看起来不错,但是当我尝试创建证书时,我无法

关于信息:
dotnet开发人员证书https -t -v
找不到有效的HTTPS证书,其密钥可跨安全分区访问。 将运行以下命令对其进行修复:
'sudo安全性设置密钥分区列表-D本地主机-S unsigned :, teamid:UBF8T346G9 '
此命令将使证书密钥可跨安全分区访问,并可能提示您输入密码。 有关更多信息,请参见: https :
找不到有效的HTTPS证书,其密钥可跨安全分区访问。 将运行以下命令对其进行修复:
'sudo安全性设置密钥分区列表-D本地主机-S unsigned :, teamid:UBF8T346G9 '
此命令将使证书密钥可跨安全分区访问,并可能提示您输入密码。 有关更多信息,请参见: https :
请求信任HTTPS开发证书。 如果证书不受信任,我们将运行以下命令:
'sudo安全性add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain <>'
该命令可能会提示您输入密码,以将证书安装在系统钥匙串上。
在“ CurrentUser \ My”上列出“ HTTPS”证书。
发现“ 0”符合条件。
主题-缩略图-之前-到期-具有私钥
检查证书的有效性。
列出有效证书
发现“ 0”符合条件。
主题-缩略图-之前-到期-具有私钥
列出无效的证书
发现“ 0”符合条件。
主题-缩略图-之前-到期-具有私钥
在“ LocalMachine \ My”上列出“ HTTPS”证书。
找到符合条件的“ 1”。
主题-缩略图-之前-到期-具有私钥
CN =本地主机-A9F70404AAE7E48F17B9781A71FA01CFD1FB7323-07/21/2020 20:47:47-07/21/2021 20:47:47-错误
检查证书的有效性。
列出有效证书
找到符合条件的“ 1”。
主题-缩略图-之前-到期-具有私钥
CN =本地主机-A9F70404AAE7E48F17B9781A71FA01CFD1FB7323-07/21/2020 20:47:47-07/21/2021 20:47:47-错误
列出无效的证书
发现“ 0”符合条件。
主题-缩略图-之前-到期-具有私钥
将找到的证书过滤到主题等于“ CN = localhost”的那些证书
找到符合条件的“ 1”。
主题-缩略图-之前-到期-具有私钥
CN =本地主机-A9F70404AAE7E48F17B9781A71FA01CFD1FB7323-07/21/2020 20:47:47-07/21/2021 20:47:47-错误
上市证书不包括在内。
发现“ 0”符合条件。
主题-缩略图-之前-到期-具有私钥
找到机器上存在的有效证书。
找到符合条件的“ 1”。
主题-缩略图-之前-到期-具有私钥
CN =本地主机-A9F70404AAE7E48F17B9781A71FA01CFD1FB7323-07/21/2020 20:47:47-07/21/2021 20:47:47-错误
所选证书
找到符合条件的“ 1”。
主题-缩略图-之前-到期-具有私钥
CN =本地主机-A9F70404AAE7E48F17B9781A71FA01CFD1FB7323-07/21/2020 20:47:47-07/21/2021 20:47:47-错误
尝试导出证书。

提前致谢

此页面是否有帮助?
0 / 5 - 0 等级