.Net Programming: То, что проверить на SSL, самоподписало сертификат

При установке Больших Сценариев CAT ( http://www.ranchero.com/bigcat/ ), можно добавить собственное контекстное меню (щелчок правой кнопкой) объекты. Я не думаю, что это идет с Открыть Terminal Here applescript, но я использую этот сценарий (который я честно не помню, записал ли я меня или поднялся с чужого примера):

on main(filelist)
    tell application "Finder"
        try
            activate
            set frontWin to folder of front window as string
            set frontWinPath to (get POSIX path of frontWin)
            tell application "Terminal"
                activate
                do script with command "cd \"" & frontWinPath & "\""
            end tell
        on error error_message
            beep
            display dialog error_message buttons ¬
                {"OK"} default button 1
        end try
    end tell
end main

Подобные сценарии могут также получить Вас полный путь к файлу при щелчке правой кнопкой, который еще более полезен, я нахожу.

5
задан telesphore4 27 July 2009 в 18:44
поделиться

2 ответа

Если вы используете самоподписанные сертификаты, то единственные ошибки, которые вы должны ожидать, - это цепная ошибка в корне (Cert. Issuer). Я бы предложил что-то вроде этого, которое ловит именно эту ошибку цепочки и позволяет пропустить все другие ошибки.

ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback(
    ValidateRemoteCertificate
);

private static bool ValidateRemoteCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors policyErrors )
{
    string trustedIssuer = "CN=www.domain.com";
    string trustedDomain = "CN=www.domain.com";
    bool policyErr = false;

    switch (policyErrors)
    {
        case SslPolicyErrors.None:
            policyErr |= false;
            break;
        case SslPolicyErrors.RemoteCertificateChainErrors:
            bool chainErr = false;
            foreach (X509ChainStatus status in chain.ChainStatus)
            {
                switch (status.Status)
                {
                    case X509ChainStatusFlags.NoError:
                        chainErr |= false;
                        break;
                    case X509ChainStatusFlags.UntrustedRoot:
                        if (certificate.Subject != trustedDomain || certificate.Issuer != trustedIssuer)
                            chainErr |= true;
                        else
                            chainErr |= false;
                        break;
                    default:
                        chainErr |= true;
                        break;
                }                    
            }
            policyErr |= chainErr;
            break;
        default:
            policyErr |= true;
            break;
    }

    return !policyErr;
}
5
ответ дан 13 December 2019 в 22:13
поделиться

Если вы не можете заставить клиентов создавать настоящие сертификаты, вы должны хотя бы попытаться заставить их создавать сертификаты с помощью вашего сервера. Затем вы можете проверить, действителен ли сертификат или, по крайней мере, от вашего CA, потому что вы будете знать, был ли ваш CA скомпрометирован. Если вы доверяете любым и всем ЦС, в действительности нет ничего стоящего.

4
ответ дан 13 December 2019 в 22:13
поделиться
Другие вопросы по тегам:

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