8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

HttpClient 使用 PFX 传输证书与第三方应用程序建立连接

myleftshoe 2月前

69 0

我创建了一个胶囊并为其赋予了一个简单的纹理,使用像素级 Blinn-Phong 闪电模型编写了一个着色器。但结果似乎不对:镜面反射项似乎太大如果我更改 \'

我创建了一个胶囊并为其赋予了一个简单的纹理,使用像素级的 Blinn-Phong 闪电模型编写了一个着色器。但结果似乎不对:

  1. 镜面反射术语似乎太大如果我将“_Specular”属性更改为“white”,您可以看到结果
  2. 黑暗与光明的界限太过分明
  3. 无论我如何改变光源位置(Unity默认设置,定向光),胶囊的颜色都不会改变这是我的着色器代码:
// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'

Shader "Single Texture" {
    Properties {
        _Color ("Color Tint", Color) = (1, 1, 1, 1)
        _MainTex ("Main Tex", 2D) = "white" {}
        _Specular ("Specular", Color) = (1, 1, 1, 1)
        _Gloww ("Gloss", Range(8.0, 256)) = 20
    }
    SubShader {
         Pass {
             Tags { "LightMode"="ForwardBase"}

             CGPROGRAM

             #pragma vertex vert
             #pragma fragment frag

             #include <Lighting.cginc>

             fixed4 _Color;
             sampler2D _MainTex;
             float4 _MainTex_ST;
             fixed4 _Specular;
             float _Gloss;

             struct a2v {
                float4 vertex : POSITION;
                float3 normal : NORMAL;
                float4 texcoord : TEXCOORD0;
              };

              struct v2f {
                  float4 pos : SV_POSITION;
                  float3 worldNormal : TEXCOORD0;
                  float3 worldPos : TEXCOORD1;
                  float2 uv : TEXCOORD2;
              };


              v2f vert(a2v v) {
                  v2f o;
                  o.pos = UnityObjectToClipPos(v.vertex);
                  o.worldNormal = UnityObjectToWorldNormal(v.normal);
                  o.worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;
                  o.uv = v.texcoord.xy * _MainTex_ST.xy + _MainTex_ST.zw;
                  return o;
              }

              fixed4 frag(v2f i) : SV_TARGET {
                  fixed3 worldNormal = normalize(i.worldNormal);
                  fixed3 worldLightDir = normalize(UnityWorldSpaceLightDir(i.worldPos));

                  fixed3 albedo = tex2D(_MainTex, i.uv).rgb * _Color.rgb;

                  fixed3 ambient = UNITY_LIGHTMODEL_AMBIENT.xyz * albedo;

                  fixed3 diffuse = _LightColor0.rgb * albedo * saturate(dot(worldNormal, worldLightDir));

                  fixed3 viewDir = normalize(UnityWorldSpaceViewDir(i.worldPos));
                  fixed3 halfDir = normalize(worldLightDir + viewDir);
                  fixed3 specular = _LightColor0.rgb * _Specular.rgb * pow(max(0, dot(worldNormal, halfDir)), _Gloss);

                  return fixed4(ambient + diffuse + specular, 1.0);
              }

             ENDCG
         }
    }
    Fallback "Specular"
}

这是我的错误胶囊:

在此处输入图片描述

实际上,我正在遵循一本 Unity Shader 教程书,我检查了书中的代码,结果发现我的代码与它完全相同。

我想知道问题是否与某种设置有关或者......

希望有人能告诉我这个问题。

帖子版权声明 1、本帖标题:HttpClient 使用 PFX 传输证书与第三方应用程序建立连接
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由myleftshoe在本站《ubuntu》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 我有一个 Asp.Net core 应用程序,它有很多 PFX 证书,这些证书作为资源添加到应用程序中,每个证书都有一个特定的客户端。这个 Asp.net 应用程序负责

    我有一个 Asp.Net core 应用程序,它有很多 PFX 证书,这些证书作为资源添加到应用程序中,每个证书都有一个特定的客户端。这个 Asp.net 应用程序负责通过用户名/密码验证用户,检索存储的 PFX 证书并向另一个应用程序提交 POST 请求,而我无法访问该应用程序。

    在本地主机上运行时一切正常,但是,当我部署解决方案时(我在 Ubuntu 和 IIS 中部署它)我收到 SSL 异常,表明无法建立连接。

    我进行了一些测试,得出结论,不是第三方服务器拒绝连接,而是部署服务器。有人能帮我解决这个问题吗?

    这是我的 C# 代码:

    X509Certificate2 certificate;
    string certificatePassword = "myPassword";
    
    var assembly = System.Reflection.Assembly.GetExecutingAssembly();
    var resourceName = "MyApplication.identification_certificate.pfx";
    using (Stream stream = assembly.GetManifestResourceStream(resourceName))
    {
      byte[] bytes = new byte[stream.Length];
      await stream.ReadAsync(bytes, 0, bytes.Length);
      certificate = new X509Certificate2(bytes, certificatePassword);
    }
    
    
    HttpClientHandler handler = new HttpClientHandler();
    handler.ClientCertificateOptions = ClientCertificateOption.Manual;
    handler.SslProtocols = SslProtocols.Tls12;
    handler.ClientCertificates.Add(certificate);
    handler.ServerCertificateCustomValidationCallback = (sender, cert, chain, sslPolicyErrors) => true;
    
    using (HttpClient client = new HttpClient(handler))
    {
     // Set the content type
     client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/xml"));
    
     // Make the request
     string url = _configuration["Company"] + "/GetServicedUserInfo/";
     HttpResponseMessage rsp = await client.PostAsync(url, new StringContent(xmlRequest, Encoding.UTF8, "application/xml"));  //<< Exception happens here
     string responseContent = await rsp.Content.ReadAsStringAsync();
    }
    response.Structure = JsonConvert.SerializeObject(clientResponse);
    

    Ubuntu 异常消息:

    InnerException = {System.Net.Sockets.SocketException (104): System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.CreateException(SocketError error, Boolean forAsyncThrow) 在 System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.SendAsy 处重置连接...

    如果有人能给我提供一些见解,我将不胜感激!提前谢谢你。

    手动安装证书,将证书添加到受信任的颁发机构,将调用从 RestSharp 更改为 System.Net.Http,使用其中一个 PFX 作为 DNS SSL 服务器

  • 获取客户端和服务器 Hello 数据包的 Wireshark/tcpdump 跟踪。查找每端提供的 TLS 版本、密码套件和哈希套件,并检查是否存在不匹配的情况。这里有一些不好的做法:不要硬编码 PFX 密码,如果需要加密,则让用户输入密码,否则不要费心加密。不要设置

  • 此错误消息表示 SSL 证书验证存在问题,应用程序使用的 SSL 证书未被识别为有效,因为它是由不受信任的证书颁发机构签名的。要解决此问题,您需要手动将自签名证书添加到本地计算机上的受信任的根证书颁发机构存储中。

  • 正如@Charlieface所评论的,请看 这里 .

    您会看到 中的异常, PostAsync 因为 .NET 在后台启动并与服务器协商 SSL 协议。要查看该异常,您需要展开 ServerCertificateCustomValidationCallback ,例如:

            httpClientHandler.ServerCertificateCustomValidationCallback += (_, cert, chain, policyErrors) =>
            {
                if (policyErrors.HasFlag(SslPolicyErrors.RemoteCertificateNotAvailable))
                {
                    // certificate not provided for validation; cannot continue
                    return false;
                }
    
                if (policyErrors is SslPolicyErrors.None)
                {
                    // certificate accepted
                    return true;
                }
    
                if (policyErrors.HasFlag(SslPolicyErrors.RemoteCertificateNameMismatch))
                {
                    // certificate failed CN name check
                }
    
                var hasChainErrors = policyErrors.HasFlag(SslPolicyErrors.RemoteCertificateChainErrors);
                if (hasChainErrors)
                {
                    // certificate generated policy error(s)
                    // log using policyErrors.ToString()
    
                    // certificate rejected (HTTPS reject)
                    return false;
                }
    
                // certificate accepted (TLS check passed)
                return true;
            };
    
  • 我正在尝试将我的 Unity 游戏上传到 Google Play 控制台,但遇到了以下错误:\'应用程序包中的某些功能模块超出了最大压缩下载范围......

    我正在尝试将我的 Unity 游戏上传到 Google Play 控制台,但遇到以下错误:

    \'应用程序包中的某些功能模块超出了最大压缩下载大小 200 MB。减小这些模块的大小:base。\'

    通常,在 Unity 中启用“拆分应用程序二进制”选项可以解决此问题。但是,我已经启用了此选项,但仍然遇到错误。我的 AAB 文件大小为 308 MB。

    以下是我迄今为止尝试过的:

    • 确保已启用‘拆分应用程序二进制’。
    • 减少了项目中资产和资源的规模。

    尽管进行了这些努力,错误仍然存​​在。我可以采取哪些步骤来解决此问题?在 Unity 或 Google Play 控制台中,我是否应该考虑其他设置或配置?

    感谢您的帮助!

    以下是我迄今为止尝试过的:

    • 确保已启用‘拆分应用程序二进制’。
    • 减少了项目中资产和资源的规模。
  • Jack 2月前 0 只看Ta
    引用 7

    谢谢你的回答!我添加了你提供的代码,发现是证书链的问题。将 CA 添加到 localhost 上的 ca-certificates 文件夹后,它可以工作,但是,在部署应用程序后,服务器仍然给出 SSL 异常,甚至没有调用自定义事件处理程序来验证它。

  • 我在 AWS EC2 实例上部署 Rasa 聊天机器人时遇到问题。我已成功使用 Winscp 将我的 Rasa 项目文件夹传输到 AWS 上的 Ubuntu 服务器,并在 Putty 的终端上安装了 Rasa...

    我在 AWS EC2 实例上部署 Rasa 聊天机器人时遇到问题。我已成功使用 Winscp 将我的 Rasa 项目文件夹传输到 AWS 上的 Ubuntu 服务器,并在 Putty 的终端上安装了 Rasa。但是,我需要使用 Putty 的链接终端进行模型训练阶段的帮助。

    尽管等待了很长一段时间,但训练过程还是非常缓慢。具体来说,它花了 30 多分钟,却连 100 个 epoch 中的 1 个都无法完成。

    以下是我的设置细节:

    1. EC2 实例类型:[t2.micro]
    2. 品尝版本:[3.1]
    3. 操作系统:Ubuntu [22.04]

    有其他人遇到过类似的问题吗?这可能是由于实例类型及其处理能力造成的吗?升级到更强大的实例是否可以解决此问题?任何见解或建议都将不胜感激。

    提前致谢!

    我正在尝试在在线服务器上运行 rasa。而且,我想在 Putty 的终端上运行 rasa。

  • 如果没有命中此回调,则还有另一个回调可能会有所帮助。请参阅此处的 ASP.NET 文档 - 向下滚动到 Handler Events 部分以获取代码。该示例演示了一个事件 OnCertificateValidated。您可以添加另一个事件:OnAuthenticationFailed。如果命中回调,事件上下文的 Exception 属性将告诉您问题所在。

  • 引用 10

    我也遇到了同样的问题。我不知道我做了多少事情,哪些是有效的,但在最后一次尝试中,我用 Python 脚本删除了所有 .meta 文件。

  • t2.micro 不仅是一个动力不足的实例,而且在相当短的持续时间后,它就会耗尽

  • 所以...我在代码中添加了您的建议,并设法发现问题在于证书未被服务器信任,从而导致异常,经过一段时间的研究后,我发现必须将 CA 证书放在 /etc/ssl/certs/ 文件夹中才能使其受信任,这样做之后,应用程序开始正常运行!非常感谢!

  • 按照链接https://code.visualstudio.com/docs/setup/linux我在 ubuntu 22.04.4 LTS 上安装了 visual studio code,然后按照链接安装 Flutterhttps://docs.flutter.dev/get-started/install/...

    按照链接 https://code.visualstudio.com/docs/setup/linux ,我在 ubuntu 22.04.4 LTS 上安装了 visual studio code,然后按照 https://docs.flutter.dev/get-started/install/linux/android?tab=later-start 说明安装 Flutter,在“安装 Flutter SDK”部分,我选择使用 VS Code 安装它。在“提示 VS Code 安装 Flutter”第 1 至 4 部分:

    1. 启动 VS Code。
    2. 要打开命令面板,请按 Control + Shift + P。
    3. 在命令面板中,输入 flutter。
    4. 选择 Flutter:新项目。

    当我在命令面板中输入\'flutter\'时,会出现以下消息:\'没有匹配的结果\'令人沮丧的是,当我运行\'flutter doctor\'功能时,我有:

    Doctor summary (to see all details, run flutter doctor -v):
    [] Flutter (Channel stable, 3.19.6, on Ubuntu 22.04.4 LTS 6.5.0-28-generic, locale es_ES.UTF-8)
    [] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
    [] Chrome - develop for the web
    [] Linux toolchain - develop for Linux desktop
    [] Android Studio (version 2023.3)
    [] VS Code (version 1.89.1)
    [] Connected device (2 available)
    [] Network resources
    
    • No issues found!
    

    我已经尝试了各种各样的方法但目前还没有效果。

    我已经在 Windows PC 上安装了 Flutter,并成功开发了应用程序,当我在 Ubuntu 上尝试时一切都变得复杂了,我真的需要它在 Ubuntu 上运行

    我提前感谢所有回答的人

    尝试使用 Visual Studio Code 和 Ubuntu 创建一个 Flutter 应用

  • 看来我在写 \'Flutter: New Project\' 的时候忘记在开头加 \'>\' 字符了,所以真正应该写的是 \'>Flutter: New Project\'。到此话题结束。

返回
作者最近主题: