I found my solution (yours may be different). For us the problem was that the name used on the site did not match the name (or nickname) used in UPS.
Name on site is found at: Stores > Configuration > General > General > Store Information > Store Name.
I'm guessing that the address may need to match as well.
How I found that info... was to edit the following file: (Magento root) > vendor > magento > module-ups > Model > Carrier.php
find this line (around 1831):
return new DataObject(['errors' => __('Failed to send items... ')]);
and change to:
return new DataObject(['errors' => __('Failed to send items... '.$exception)]);
... then when you try to "save" to get the label, this will print out the exception and towards the top you may see what the "real" error message is.