### Summary

galaxy cli is able to find a collection on a remote api/v3 endpoint, but when it goes to install the collection version it fails to find it in the cache ...

```(Epdb) print(pid.stdout.decode("utf-8"))
ansible-galaxy [core 2.13.9]
  config file = /tmp/pytest-of-pulp/pytest-20/test_install_signed_collection0/ansible.cfg
  configured module search path = ['/var/lib/pulp/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.8/site-packages/ansible
  ansible collection location = /var/lib/pulp/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/local/bin/ansible-galaxy
  python version = 3.8.13 (default, Jun 24 2022, 15:27:57) [GCC 8.5.0 20210514 (Red Hat 8.5.0-13)]
  jinja version = 3.1.2
  libyaml = True
Using /tmp/pytest-of-pulp/pytest-20/test_install_signed_collection0/ansible.cfg as config file
Starting galaxy collection install process
[WARNING]: The specified collections path '/tmp/pytest-of-
pulp/pytest-20/test_install_signed_collection0' is not part of the configured
Ansible collections paths
'/var/lib/pulp/.ansible/collections:/usr/share/ansible/collections'. The
installed collection won't be picked up in an Ansible run.
Process install dependency map
Initial connection to galaxy_server: http://localhost:5001/pulp_ansible/galaxy/4fae352f-2a64-4c8e-8b30-5fd6e1996408/
Calling Galaxy at http://localhost:5001/pulp_ansible/galaxy/4fae352f-2a64-4c8e-8b30-5fd6e1996408/
Calling Galaxy at http://localhost:5001/pulp_ansible/galaxy/4fae352f-2a64-4c8e-8b30-5fd6e1996408/api
Found API version 'v1, v2, v3' with Galaxy server pulp_ansible (http://localhost:5001/pulp_ansible/galaxy/4fae352f-2a64-4c8e-8b30-5fd6e1996408/api)
Calling Galaxy at http://localhost:5001/pulp_ansible/galaxy/4fae352f-2a64-4c8e-8b30-5fd6e1996408/api/v3/collections/testing/k8s_demo_collection/
Calling Galaxy at http://localhost:5001/pulp_ansible/galaxy/4fae352f-2a64-4c8e-8b30-5fd6e1996408/api/v3/collections/testing/k8s_demo_collection/versions/?limit=100
Calling Galaxy at http://localhost:5001/pulp_ansible/galaxy/4fae352f-2a64-4c8e-8b30-5fd6e1996408/api/v3/collections/testing/k8s_demo_collection/versions/0.0.3/
Starting collection install process
ERROR! Unexpected Exception, this is probably a bug: The is no known source for testing.k8s_demo_collection:0.0.3

----------------DEBUG-------------------
collection: testing.k8s_demo_collection:0.0.3 <class 'ansible.galaxy.dependency_resolution.dataclasses.Candidate'>
cache: {<testing.k8s_demo_collection:0.0.3 of type 'galaxy' from pulp_ansible>: ('http://localhost:5001/pulp_ansible/galaxy/default/api/v3/plugin/ansible/content/4fae352f-2a64-4c8e-8b30-5fd6e1996408/collections/artifacts/testing-k8s_demo_collection-0.0.3.tar.gz', '360548ba80e3dce478b7915ca89a5613dc80c650a55b96f5491012a8297e12ac', <ansible.galaxy.token.BasicAuthToken object at 0x7fdf1408cac0>)}
        testing.k8s_demo_collection:0.0.3 <class 'ansible.galaxy.dependency_resolution.dataclasses.Candidate'>
        testing.k8s_demo_collection:0.0.3 == testing.k8s_demo_collection:0.0.3? False
----------------DEBUG-------------------

the full traceback was:

Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/ansible/galaxy/collection/concrete_artifact_manager.py", line 141, in get_galaxy_artifact_path
    url, sha256_hash, token = self._galaxy_collection_cache[collection]
KeyError: <testing.k8s_demo_collection:0.0.3 of type 'galaxy' from pulp_ansible>

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/ansible/cli/__init__.py", line 601, in cli_executor
    exit_code = cli.run()
  File "/usr/local/lib/python3.8/site-packages/ansible/cli/galaxy.py", line 682, in run
    return context.CLIARGS['func']()
  File "/usr/local/lib/python3.8/site-packages/ansible/cli/galaxy.py", line 104, in method_wrapper
    return wrapped_method(*args, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/ansible/cli/galaxy.py", line 1327, in execute_install
    self._execute_install_collection(
  File "/usr/local/lib/python3.8/site-packages/ansible/cli/galaxy.py", line 1364, in _execute_install_collection
    install_collections(
  File "/usr/local/lib/python3.8/site-packages/ansible/galaxy/collection/__init__.py", line 748, in install_collections
    install(concrete_coll_pin, output_path, artifacts_manager)
  File "/usr/local/lib/python3.8/site-packages/ansible/galaxy/collection/__init__.py", line 1295, in install
    b_artifact_path = (
  File "/usr/local/lib/python3.8/site-packages/ansible/galaxy/collection/concrete_artifact_manager.py", line 149, in get_galaxy_artifact_path
    raise_from(
  File "<string>", line 3, in raise_from
RuntimeError: The is no known source for testing.k8s_demo_collection:0.0.3
```

The error comes from this block of code: **https://github.com/ansible/ansible/blob/devel/lib/ansible/galaxy/collection/concrete_artifact_manager.py#L139-L145**

I inspected the key in the dict and the collection variable and they are very similar but one has signing keys and the other does not.

```
  1 {
  2     'fqcn': 'testing.k8s_demo_collection',
  3     'ver': '0.0.3',
  4     'src': <pulp_ansible "pulp_ansible" @ http://localhost:5001/pulp_ansible/galaxy/6ec55cca-6342-4cdb-82bf-aa6c2f800843/api with priority 1>,
  5     'type': 'galaxy',
  6     'signatures': frozenset()
  7 }
  8 
  9 {
 10     'fqcn': 'testing.k8s_demo_collection',
 11     'ver': '0.0.3',
 12     'src': <pulp_ansible "pulp_ansible" @ http://localhost:5001/pulp_ansible/galaxy/6ec55cca-6342-4cdb-82bf-aa6c2f800843/api with priority 1>,
 13     'type': 'galaxy',
 14     'signatures': frozenset({'-----BEGIN PGP SIGNATURE-----\n\niQEzBAABCAAdFiEEbt8wElZIC5uAHro9BaXm2iadnZgFAmRJd/AACgkQBaXm2iad\nnZhSdAf/QIm5AuYbgZ8Jxa/TcavRxoetQtgsspBBiDqvBP67BExN7xoBe/DUtjIA\nn2xbJgxzcwUI+WOYWE+iNjzjYpOBfN8jFlGMdAc21dfN+5NUvH+R0+YmwNf7Ihob\nd0qU3JozJZo+GCd2rMwprnzMp+3LvU9HD+r+hO9ELlMLQeYWVVn/    GBNrjZJ6yGlj\nBCGxvagEMhkp4Gso/ft5Q6VqFSWUrIERb9QZWKTnM7iryNO3ojcjBEvFdk+RuOho\nNN0rjN4Xu+DkbI3nUt49l+XC7yBubu9BBx30KcL1srrVI0nY6Px6LbLMnezg6C5+\nC7qsYP0E+41TQTbb7nxIELXvr/mP5g==\n=3jS8\n-----END PGP SIGNATURE-----\n'})
 15 }  
```


### Issue Type

Bug Report

### Component Name

galaxy

### Ansible Version

```console
ansible-galaxy [core 2.13.9]
  config file = /tmp/pytest-of-pulp/pytest-20/test_install_signed_collection0/ansible.cfg
  configured module search path = ['/var/lib/pulp/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.8/site-packages/ansible
  ansible collection location = /var/lib/pulp/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/local/bin/ansible-galaxy
  python version = 3.8.13 (default, Jun 24 2022, 15:27:57) [GCC 8.5.0 20210514 (Red Hat 8.5.0-13)]
  jinja version = 3.1.2
  libyaml = True
Using /tmp/pytest-of-pulp/pytest-20/test_install_signed_collection0/ansible.cfg as config file
```


### Configuration

```console
# if using a version older than ansible-core 2.12 you should omit the '-t all'
$ ansible-config dump --only-changed -t all
```


### OS / Environment

Centos 8 stream docker image from pulp ci builds

### Steps to Reproduce

This is a bit nebulous because it's a failing job in the pulp_ansible CI. We do know that rolling back to 2.13.8 fixes it.


### Code of Conduct

- [X] I agree to follow the Ansible Code of Conduct
"""Return sort key function return value for given requirement.
        This result should be based on preference that is defined as
        "I think this requirement should be resolved first".
        The lower the return value is, the more preferred this
        group of arguments is.
        resolvelib >=0.5.3, <0.7.0
        :param resolution: Currently pinned candidate, or ``None``.
        :param candidates: A list of possible candidates.
        :param information: A list of requirement information.
        Each ``information`` instance is a named tuple with two entries:
          * ``requirement`` specifies a requirement contributing to
            the current candidate list
          * ``parent`` specifies the candidate that provides
            (dependend on) the requirement, or `None`
            to indicate a root requirement.
        resolvelib >=0.7.0, < 0.8.0
        :param identifier: The value returned by ``identify()``.
        :param resolutions: Mapping of identifier, candidate pairs.
        :param candidates: Possible candidates for the identifer.
            Mapping of identifier, list of candidate pairs.
        :param information: Requirement information of each package.