Generation of prime numbers is just madness by crypto gurus. My guess is that no prime will be strong enough, or safe enough if you follow all the recommendations.
not be close to a power p = k^j + r with |r| small
p-1/2 must have a large factor
((p-1/2)-1)/2 must have a large factor
(p+1)/2 must have a large factor
avoid p = k*q + r with |r| small
not be at the end or the start of a large prime gap,
i.e. p - r and p + s with |r| and |s| small are also acceptable primes
and of course, p - q > |r| with r at least a certain amount of bits
(this implies the trap p != q for which RSA does not work)
make sure p is not a pseudoprime.
do not forget that miller-rabin tests work only if gcd(base, p) == 1 and base != p
when running multiple miller-rabin tests, make sure the different basis
are co-prime, else a pseudoprime could escape with an unacceptable
ensure log2(p*q) == log2(n) by ensuring log2(p*p) == log2(q*q) == log2(n)
and so on, and so on. All the recommendations do have some ground. They might not be all necessary. Some famous recommendations apply to unpractical attacks.
All known practical failures are related to weak randomness, or protocol failures, or implementation bugs exposing the computer memory and possibly key material.
Simple advice : Just follow the standard blindly. Document that you follow the standard strictly. If there is a weakness, it will be published, you will know it, corrections will be published and you know how to detect and fix the problem.
If the standard suggest that it is secure to use primes made from randomness from an approved generator, as suggested in the other answer, then this is the state of the art.