Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker “Asp.net核心”一词;asn1编码例程:asn1“d2i”读取“bio:数据不足”;证书错误_Docker_Asp.net Core_Encryption_Certificate - Fatal编程技术网

Docker “Asp.net核心”一词;asn1编码例程:asn1“d2i”读取“bio:数据不足”;证书错误

Docker “Asp.net核心”一词;asn1编码例程:asn1“d2i”读取“bio:数据不足”;证书错误,docker,asp.net-core,encryption,certificate,Docker,Asp.net Core,Encryption,Certificate,在Linux Docker容器中本地运行asp.net core应用程序时,出现以下错误: Unhandled exception. Interop+Crypto+OpenSslCryptographicException: error:0D06B08E:asn1 encoding routines:asn1_d2i_read_bio:not enough data at Internal.Cryptography.Pal.OpenSslX509CertificateReader.From

在Linux Docker容器中本地运行asp.net core应用程序时,出现以下错误:

Unhandled exception. Interop+Crypto+OpenSslCryptographicException: error:0D06B08E:asn1 encoding routines:asn1_d2i_read_bio:not enough data
   at Internal.Cryptography.Pal.OpenSslX509CertificateReader.FromBio(SafeBioHandle bio, SafePasswordHandle password)
   at Internal.Cryptography.Pal.OpenSslX509CertificateReader.FromFile(String fileName, SafePasswordHandle password, X509KeyStorageFlags keyStorageFlags)

 
。。。在my startup.cs中实例化X509Certificate2对象时发生:

        services.AddDefaultIdentity<ApplicationUser>(options => options.SignIn.RequireConfirmedAccount = true).AddEntityFrameworkStores<ApplicationDbContext>();
        var identityServerBuilder = services.AddIdentityServer().AddApiAuthorization<ApplicationUser, ApplicationDbContext>();      

        var certificate = new X509Certificate2(@"abc.pfx", "abc"); // This is where the exception is thrown.
        identityServerBuilder.AddSigningCredential(certificate);
…并验证其完整性:

openssl pkcs12 -nokeys -info -nocerts -in abc.pfx
。。。没有发现任何问题:

MAC: sha1, Iteration 2048
MAC length: 20, salt length: 8
PKCS7 Encrypted data: pbeWithSHA1And40BitRC2-CBC, Iteration 2048
Certificate bag
PKCS7 Data
Shrouded Keybag: pbeWithSHA1And3-KeyTripleDES-CBC, Iteration 2048
我还使用Microsoft管理控制台生成pfx,但这会导致相同的错误

我正在执行此Docker run命令装载我的pfx文件:

docker run -d=false -p 8080:80 -v abc.pfx:/app/abc.pfx --name mijncont mijncont:dev
My appsettings.json:

"IdentityServer": {
    "Clients": {
      "TEST.Client": {
        "Profile": "IdentityServerSPA"
      }
    },
    "Key": {
      "Type": "Store",
      "StoreName": "My",
      "StoreLocation": "LocalMachine",
      "Name": "CN=mijnsubject"
    }
运行时:

docker exec-it mijncont/bin/bash

。。。将出现以下提示:

root@3815c63cb5c4:/app#
执行“ls-la”时

我明白了:

drwxr-xr-x 2根根目录4096 Jul 13 16:04 abc.pfx

但是,当我在Startup.cs中包含这一行时:

Console.WriteLine(“大小:”+newsystem.IO.FileInfo(“abc.pfx”).Length)

。Net抛出一个异常,表示该文件不存在

我在Docker->Settings->Resources->file Share中包含了包含pfx文件的目录


有人吗?

问题在于我安装abc.pfx文件的方式

这:

docker run -d=false -p 8080:80 -v abc.pfx:/app/abc.pfx --name mijncont mijncont:dev
…在容器中装入名为abc.fpx的目录(保存abc.pfx文件)

如果指定绝对路径:

docker run -d=false -p 8080:80 -v C:\mysolution\abc.pfx:/app/abc.pfx --name mijncont 
…只有文件被装载到我想要的“app”目录

docker run -d=false -p 8080:80 -v C:\mysolution\abc.pfx:/app/abc.pfx --name mijncont