diff --git a/lib/SimpleSAML/XML/Shib13/AuthnResponse.php b/lib/SimpleSAML/XML/Shib13/AuthnResponse.php
index ce9ae7a71b0f16312954eb83c5465e4e6e30eee0..bb9ca85bc9efa0fe9e351a404a10010ab2654847 100644
--- a/lib/SimpleSAML/XML/Shib13/AuthnResponse.php
+++ b/lib/SimpleSAML/XML/Shib13/AuthnResponse.php
@@ -88,19 +88,28 @@ class SimpleSAML_XML_Shib13_AuthnResponse {
 
 		/* Get the metadata of the issuer. */
 		$metadata = SimpleSAML_Metadata_MetaDataStorageHandler::getMetadataHandler();
-		$md = $metadata->getMetaData($issuer, 'shib13-idp-remote');
-
-		if(array_key_exists('certFingerprint', $md)) {
-			/* Get fingerprint for the certificate of the issuer. */
-			$issuerFingerprint = $md['certFingerprint'];
+		$md = $metadata->getMetaDataConfig($issuer, 'shib13-idp-remote');
+
+		$publicKeys = $md->getPublicKeys('signing');
+		if ($publicKeys !== NULL) {
+			$certFingerprints = array();
+			foreach ($publicKeys as $key) {
+				if ($key['type'] !== 'X509Certificate') {
+					continue;
+				}
+				$certFingerprints[] = sha1(base64_decode($key['X509Certificate']));
+			}
+			$this->validator->validateFingerprint($certFingerprints);
+		} elseif ($md->hasValue('certFingerprint')) {
+			$certFingerprints = $md->getArrayizeString('certFingerprint');
 
 			/* Validate the fingerprint. */
-			$this->validator->validateFingerprint($issuerFingerprint);
-		} elseif(array_key_exists('caFile', $md)) {
+			$this->validator->validateFingerprint($certFingerprints);
+		} elseif ($md->hasValue('caFile')) {
 			/* Validate against CA. */
-			$this->validator->validateCA(SimpleSAML_Utilities::resolveCert($md['caFile']));
+			$this->validator->validateCA(SimpleSAML_Utilities::resolveCert($md->getString('caFile')));
 		} else {
-			throw new Exception('Required field [certFingerprint] or [caFile] in Shibboleth 1.3 IdP Remote metadata was not found for identity provider [' . $issuer . ']. Please add a fingerprint and try again. You can add a dummy fingerprint first, and then an error message will be printed with the real fingerprint.');
+			throw new SimpleSAML_Error_Exception('Missing certificate in Shibboleth 1.3 IdP Remote metadata for identity provider [' . $issuer . '].');
 		}
 
 		return true;