Используя самоподписанный сертификат с HttpWebRequest/Response.NET

Я обнаружил, что -e флаг элегантный и прямой

STR="Hello\nWorld" echo -e $STR #outputs Hello World

Если строка является результатом другой команды, я просто использую кавычки

indexes_diff=$(git diff index.yaml) echo "$indexes_diff"

77
задан Dominic Scheirlinck 8 February 2009 в 23:56
поделиться

3 ответа

@Domster: это работает, но Вы могли бы хотеть осуществить немного безопасности путем проверки, соответствует ли хеш сертификата тому, что Вы ожидаете. Таким образом, расширенная версия немного походит на это (на основе некоторого живого кода, который мы используем):

static readonly byte[] apiCertHash = { 0xZZ, 0xYY, ....};

/// <summary>
/// Somewhere in your application's startup/init sequence...
/// </summary>
void InitPhase()
{
    // Override automatic validation of SSL server certificates.
    ServicePointManager.ServerCertificateValidationCallback =
           ValidateServerCertficate;
}

/// <summary>
/// Validates the SSL server certificate.
/// </summary>
/// <param name="sender">An object that contains state information for this
/// validation.</param>
/// <param name="cert">The certificate used to authenticate the remote party.</param>
/// <param name="chain">The chain of certificate authorities associated with the
/// remote certificate.</param>
/// <param name="sslPolicyErrors">One or more errors associated with the remote
/// certificate.</param>
/// <returns>Returns a boolean value that determines whether the specified
/// certificate is accepted for authentication; true to accept or false to
/// reject.</returns>
private static bool ValidateServerCertficate(
        object sender,
        X509Certificate cert,
        X509Chain chain,
        SslPolicyErrors sslPolicyErrors)
{
    if (sslPolicyErrors == SslPolicyErrors.None)
    {
        // Good certificate.
        return true;
    }

    log.DebugFormat("SSL certificate error: {0}", sslPolicyErrors);

    bool certMatch = false; // Assume failure
    byte[] certHash = cert.GetCertHash();
    if (certHash.Length == apiCertHash.Length)
    {
        certMatch = true; // Now assume success.
        for (int idx = 0; idx < certHash.Length; idx++)
        {
            if (certHash[idx] != apiCertHash[idx])
            {
                certMatch = false; // No match
                break;
            }
        }
    }

    // Return true => allow unauthenticated server,
    //        false => disallow unauthenticated server.
    return certMatch;
}
76
ответ дан devstuff 6 November 2019 в 03:26
поделиться

Оказывается, если Вы просто хотите отключить проверку сертификата в целом, можно изменить ServerCertificateValidationCallback на ServicePointManager, как так:

ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };

Это проверит все сертификаты (включая недопустимые, или самоподписанные с истекшим сроком).

88
ответ дан Dominic Scheirlinck 6 November 2019 в 03:26
поделиться

Добавьте сам подписанный сертификат к Доверенным корневым центрам сертификации Локального компьютера

, можно импортировать сертификат путем выполнения MMC как, Администратор.

, Как к: Сертификаты Представления с Защелкой MMC - в

42
ответ дан H.B. 6 November 2019 в 03:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: