code: def _validate_certificate_url(self, cert_url):
          # type: (str) -> None
          
          parsed_url = urlparse(cert_url)
  
          protocol = parsed_url.scheme
          if protocol.lower() != CERT_CHAIN_URL_PROTOCOL.lower():
              raise VerificationException(
                  "Signature Certificate URL has invalid protocol: {}. "
                  "Expecting {}".format(protocol, CERT_CHAIN_URL_PROTOCOL))
  
          hostname = parsed_url.hostname
          if (hostname is None or
                  hostname.lower() != CERT_CHAIN_URL_HOSTNAME.lower()):
              raise VerificationException(
                  "Signature Certificate URL has invalid hostname: {}. "
                  "Expecting {}".format(hostname, CERT_CHAIN_URL_HOSTNAME))
  
          normalized_path = os.path.normpath(parsed_url.path)
          if not normalized_path.startswith(CERT_CHAIN_URL_STARTPATH):
              raise VerificationException(
                  "Signature Certificate URL has invalid path: {}. "
                  "Expecting the path to start with {}".format(
                      normalized_path, CERT_CHAIN_URL_STARTPATH))
  
          port = parsed_url.port
          if port is not None and port != CERT_CHAIN_URL_PORT:
              raise VerificationException(
                  "Signature Certificate URL has invalid port: {}. "
                  "Expecting {}".format(str(port), str(CERT_CHAIN_URL_PORT)))
docs: Validate the URL containing the certificate chain.
  
          This method validates if the URL provided adheres to the format
          mentioned here :
          https://developer.amazon.com/docs/custom-skills/host-a-custom-skill-as-a-web-service.html#cert-verify-signature-certificate-url
  
          :param cert_url: URL for retrieving certificate chain
          :type cert_url: str
          :raises: :py:class:`VerificationException` if the URL is invalid