Platformsh\Cli\Command\Domain\DomainCommandBase::validateSslOptions PHP Метод

validateSslOptions() защищенный Метод

protected validateSslOptions ( ) : boolean
Результат boolean
    protected function validateSslOptions()
    {
        // Get the contents.
        if (!is_readable($this->certPath)) {
            $this->stdErr->writeln("The certificate file could not be read: " . $this->certPath);
            return false;
        }
        $sslCert = trim(file_get_contents($this->certPath));
        // Do a bit of validation.
        $certResource = openssl_x509_read($sslCert);
        if (!$certResource) {
            $this->stdErr->writeln("The certificate file is not a valid X509 certificate: " . $this->certPath);
            return false;
        }
        // Then the key. Does it match?
        if (!is_readable($this->keyPath)) {
            $this->stdErr->writeln("The private key file could not be read: " . $this->keyPath);
            return false;
        }
        $sslPrivateKey = trim(file_get_contents($this->keyPath));
        $keyResource = openssl_pkey_get_private($sslPrivateKey);
        if (!$keyResource) {
            $this->stdErr->writeln("Private key not valid, or passphrase-protected: " . $this->keyPath);
            return false;
        }
        $keyMatch = openssl_x509_check_private_key($certResource, $keyResource);
        if (!$keyMatch) {
            $this->stdErr->writeln("The provided certificate does not match the provided private key.");
            return false;
        }
        // Each chain needs to contain one or more valid certificates.
        $chainFileContents = $this->readChainFiles($this->chainPaths);
        foreach ($chainFileContents as $filePath => $data) {
            $chainResource = openssl_x509_read($data);
            if (!$chainResource) {
                $this->stdErr->writeln("File contains an invalid X509 certificate: " . $filePath);
                return false;
            }
            openssl_x509_free($chainResource);
        }
        // Split up the chain file contents.
        $chain = [];
        $begin = '-----BEGIN CERTIFICATE-----';
        foreach ($chainFileContents as $data) {
            if (substr_count($data, $begin) > 1) {
                foreach (explode($begin, $data) as $cert) {
                    $chain[] = $begin . $cert;
                }
            } else {
                $chain[] = $data;
            }
        }
        // Yay we win.
        $this->sslOptions = ['certificate' => $sslCert, 'key' => $sslPrivateKey, 'chain' => $chain];
        return true;
    }